可视化决策树
程序员文章站
2022-04-08 13:53:25
...
以下是关于数据集的代码。
>>> from sklearn.datasets import load_iris#引入数据集iris
>>>> iris=load_iris()
>>>> print(iris.feature_names)#关于特征名字的描述信息
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
>>> print(iris.target_names)#关于标签的名字
['setosa' 'versicolor' 'virginica']
>>> print(iris.data[0])#特征的测量数据的第一行
[5.1 3.5 1.4 0.2]
>>> print(iris.target[0])#第一行数据对应的标签,0对应着‘setosa’这个类别
0
>>> for i in range(len(iris.target)):
... print("Example %d:label %s,features %s"%(i,iris.target[i],iris.data[i]))#用这个for循环可以输出所有的特征表的数据
以下进行训练分类器(这只是个小测试)。
>>> from sklearn.datasets import load_iris
>>> import numpy as np
>>> from sklearn import tree
>>> test_idx=[0,50,100]#选中三条数据,由于iris数据集一共150条数据,且三类花分别为50条,因此这0,50,100分别对应三类
>>> #training data#以下两条语句代表从数据集删除刚刚选中的三条数据,将剩下的147条数据作为训练集使用
>>> train_target =np.delete(iris.target,test_idx)
>>> train_data=np.delete(iris.data,test_idx,axis=0)
>>> #testing data#以下两条语句为准备测试集数据,即刚刚选中的三条数据作为测试集数据
>>> test_target=iris.target[test_idx]
>>> test_data=iris.data[test_idx]
>>> #以下开始训练
>>> clf=tree.DecisionTreeClassifier()
>>> clf.fit(train_data,train_target)
>>> #以下两个结果一致说明预测正确
>>> print(test_target)
[0 1 2]
>>> print(clf.predict(test_data))
[0 1 2]
决策树:http://scikit-learn.org/stable/modules/tree.html#tree
截图如下:
代码如下:
>>> from sklearn.externals.six import StringIO
>>> import pydot
>>> import pydotplus
>>> import graphviz
>>> dot_data=StringIO()
>>> tree.export_graphviz(clf,
... out_file=dot_data,
... feature_names=iris.feature_names,
... class_names=iris.target_names,
... filled=True,rounded=True,
... impurity=False)
>>> graph=pydot.graph_from_dot_data(dot_data.getvalue())
>>> graph[0].write_pdf("iris.pdf")
这样就会在C:\Users\admin目录下发现,已经生成了pdf的文件,结果如图:
注:在以上过程中遇到了各种各样的问题,主要如下
1、GraphViz’s executables not found!
2、’list’ object has no attribute ‘write_pdf’
在解决的过程中我已经晕了,最终保证以下你都做了,应该就没问题了:
1、由于我是在anaconda环境下运行的,首先保证已经下载了graphviz、pydot,pydotplus都已经install啦!
2、还需下载安装graphviz-2.38.msi,同时注意在环境变量的path下添加其bin路径。(如果你安装在了c盘可能会因为权限继续报错(我的电脑是),所以我安装在了E盘下)
3、最后一条语句我一开始是写的graph.write_pdf(“iris.pdf”),后来就会报错’list’ object has no attribute ‘write_pdf’,于是搜索解决方案,改成了graph[0].write_pdf(“iris.pdf”),就成功啦!
上一篇: 驱动探测函数研究
下一篇: 一个仿Vue风格的图片上传插件