Python实现初阶决策树

《Python数据挖掘入门与实践》这本书中关于决策树部分的讲解,代码部分相对简要,但坑爹的是,他给的数据下载网站,人家改版了,根本找不到数据,进行测试,于是我又用“鸢尾花”数据测试了一下决策树算法。

闲话少说,直接上代码。

1、导入鸢尾花数据

鸢尾花数据,可以直接从sklearn库中进行载入,分别将自变量和因变量,赋值为x和y。

from sklearn.datasets import load_iris
import numpy as np
import pandas as pd 
X_data = load_iris().data
y_data = load_iris().target

2、设置训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_data, y_data)

3、建立决策树对象

from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier(max_leaf_nodes=4,random_state = 14)

max_leaf_nodes=4,指保留最大节点的数量为4,可以理解为树的深度为4。
random_state = 14,设置随机种子为14,使用相同的随机种子能包粽子几次的实验结果相同。但是,在自己的实验中,为保证随机性,可以设置不同的随机种子。

4、训练并预测

dtc.fit(X_train,y_train) #用训练集进行训练
y_predict = dtc.predict(X_test) # 利用测试数据生成预测值y_predict
# 判断与训练集y是否相等并返回正确率
accuracy  = np.mean(y_predict == y_test)*100
print('准确率为%.2f%%' % accuracy)

得出的结果:准确率为97.37%

5、得到决策树图

导入export_graphviz,生成dot文件

from sklearn.tree import export_graphviz
export_graphviz(clf,out_file = 'tree0.dot')

生成dot文件后,用GVEdit命令转化成png格式或者其他格式。
首先安装graphviz-2.38,然后设置环境变量(本人是windows环境下运行的),然后敲下如下命令即可转化成png格式的树图。

dot -Tpng tree0.dot -o tree0.png

生成的树图如下所示:


Python实现初阶决策树_第1张图片
树图.png

由上图可知,此次创建决策用的是信息增益熵,主要用到两个特征,即X[2]和X[3]。
根节点处X[2]小于等于2.45的为一类,且均为第一类鸢尾花
X[2]大于2.45,且X[3]大于1.75的为一类,且大部分为第三类鸢尾花,只有一个样本为第二类鸢尾花。
X[3]小于等于1.75,且X[2]小于等于4.95的为一类,且大部分为第二类鸢尾花,只有一个样本为第三类鸢尾花。
X[3]小于等于1.75,且X[2]大于4.95的为一类,有2个为第二类,有4个为第三类鸢尾花。

你可能感兴趣的:(Python实现初阶决策树)