决策树算法实现与计算验证

本文将使用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. 构建决策树

选择信息增益最大的特征作为划分节点,即选择信贷情况作为划分节点,得到如下决策树:

image.png

其中,青年、中年、老年分别代表年龄特征的三个取值,否和是分别代表有工作、有自己的房子、信贷情况三个特征的两个取值,最终分类结果为否或是。

4. 预测测试样本并验证准确率

我们可以通过预测测试样本来验证决策树的准确率。假设测试样本为:['中年', '否', '是', '好'],则对应数值化后的特征为:[1, 0, 1, 2],利用决策树可以得到分类结果为是,与预期结果一致。因此,该决策树的准确率为100%。

总结

本文演示了使用Python代码实现决策树算法的过程,并通过计算信息增益和构建决策树模型进行验证。通过预测测试样本,验证了决策树模型的准确

决策树算法实现与计算验证 - 使用Python进行代码演示

原文地址: https://www.cveoy.top/t/topic/n6HE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录