采用的方法见【Python机器学习】——决策树-sklearn这里不讲方法了,理论基础都在这里
这个属于粗略版,然后大家想看详版可以关注一下wx公众号叫:小猪课堂,文章标题一样,那个发布的是我有道笔记上记录的详版
from sklearn.feature_extraction import DictVectorizer
#DictVetorizer 用于传入构造dummy_array,也可以使用pandas.get_dummies()来实现
import pandas as pd
import numpy as np
import csv#调用csv模块
from sklearn import tree#调用决策树模块
from sklearn import preprocessing#调用预处理模块
看一下数据集样子(列名过于敏感隐去)

将特征、数据和label都筛选出来
feature=np.array(data.columns[1:-1])
dummy_y=np.array(data.values[:,-1])
dummy_x=np.array(data.values[:,1:-1])
print(feature)
print(dummy_y)
print(dummy_x)

clf = tree.DecisionTreeClassifier(criterion='entropy',min_samples_leaf=5,max_depth=5)#这个采用的信息增益来划分节点的
clf.fit(dummy_x,dummy_y )

生成决策树的效果有三种
需要使用的包
import pydotplus
import matplotlib.pyplot as plt
#from PIL import Image#这个是做网页截图的不用这个
from IPython.display import Image
一、直接就生成pdf
import pydotplus
dot_data = tree.export_graphviz(clf, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
path=r"D:\learning\test1.pdf"
graph.write_pdf(path)
二、保存成.dot文件 然后本地转化.PDF文件
with open('allElectronicInformationGainOri.dot','w')as f:
#allElectronicInformationGainOri.dot 这个是自己定义的名字,或者说是要生成的名字
f=tree.export_graphviz(clf,feature_names=feature,out_file=f)
三、直接再jupyter上生成决策树效果图
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=list,
# class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
同时还有一个就是解决决策树中有中文的问题,但是我一直都没解决
不过推荐两篇文章可以给大家参考一下
文章1:graphviz画决策树图中文乱码问题解决
文章2:解决Graphviz无法显示决策树中文问题
喜欢给个赞吧,谢谢啦~
更多内容VX关注【小猪课堂】公众号,你想要的干货都在这里

2555

被折叠的 条评论
为什么被折叠?



