决策树算法实现与计算验证 - 使用Python进行代码演示
决策树算法实现与计算验证
本文将使用Python代码演示决策树算法的实现过程,并通过计算信息增益和构建决策树模型来进行验证。
1. 数据准备pythonfrom sklearn.tree import DecisionTreeClassifierfrom sklearn import preprocessingimport numpy as npimport pandas as pdfrom sklearn import treeimport graphviz
features = ['年龄', '有工作', '有自己的房子', '信贷情况']
X_train = pd.DataFrame([ ['青年', '否', '否', '一般'], ['青年', '否', '否', '好'], ['青年', '是', '否', '好'], ['青年', '是', '是', '一般'], ['青年', '否', '否', '一般'], ['中年', '否', '否', '一般'], ['中年', '否', '否', '好'], ['中年', '是', '是', '好'], ['中年', '否', '是', '非常好'], ['中年', '否', '是', '非常好'], ['老年', '否', '是', '非常好'], ['老年', '否', '是', '好'], ['老年', '是', '否', '好'], ['老年', '是', '否', '非常好'], ['老年', '否', '否', '一般']])
y_train = pd.DataFrame(['否', '否', '是', '是', '否', '否', '否', '是', '是', '是', '是', '是', '是', '是', '否'])
le_x = preprocessing.LabelEncoder()le_x.fit(np.unique(X_train))X_train = X_train.apply(le_x.transform)
le_y = preprocessing.LabelEncoder()le_y.fit(np.unique(y_train))y_train = y_train.apply(le_y.transform)
model_tree = DecisionTreeClassifier(criterion='entropy')model_tree.fit(X_train, y_train)
dot_data = tree.export_graphviz(model_tree, out_file=None, feature_names=features, class_names=[str(k) for k in np.unique(y_train)], filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data)graph.render('tree')
2. 计算信息增益
首先计算总的经验熵:
经验熵计算代码
然后我们让A_1,A_2,A_3,A_4分别表示年龄、有工作、有自己的房子和信贷情况4个特征,则计算出年龄的信息增益为:
年龄信息增益计算代码
同理其他的也可以计算出来。
3. 构建决策树
选择信息增益最大的特征作为划分节点,即选择信贷情况作为划分节点,得到如下决策树:

其中,青年、中年、老年分别代表年龄特征的三个取值,否和是分别代表有工作、有自己的房子、信贷情况三个特征的两个取值,最终分类结果为否或是。
4. 预测测试样本并验证准确率
我们可以通过预测测试样本来验证决策树的准确率。假设测试样本为:['中年', '否', '是', '好'],则对应数值化后的特征为:[1, 0, 1, 2],利用决策树可以得到分类结果为是,与预期结果一致。因此,该决策树的准确率为100%。
总结
本文演示了使用Python代码实现决策树算法的过程,并通过计算信息增益和构建决策树模型进行验证。通过预测测试样本,验证了决策树模型的准确
原文地址: https://www.cveoy.top/t/topic/n6HE 著作权归作者所有。请勿转载和采集!