python实现决策树可视化Graphviz的安装

网友投稿 1830 2022-09-07

python实现决策树可视化Graphviz的安装

python实现决策树可视化Graphviz的安装

上一篇文章:​​决策树(信息熵、信息增溢、GINI)的计算​​

这篇文章我们来介绍下如何通过python实现决策树可视化。

【概念】

决策树是一种机器学习的方法。决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。通过学习样本得到一个决策树,这个决策树能够对新的数据给出正确的分类。

【准备数据】

outlook

temperature

humidity

windy

play

sunny

hot

high

FALSE

no

sunny

hot

high

TRUE

no

overcast

hot

high

FALSE

yes

rainy

mild

high

FALSE

yes

rainy

cool

normal 

FALSE

yes

rainy

cool

normal 

TRUE

no

overcast

cool

normal 

TRUE

yes

sunny

mild

high

FALSE

no

sunny

cool

normal 

FALSE

yes

rainy

mild

normal 

FALSE

yes

sunny

mild

normal 

TRUE

yes

overcast

mild

high

TRUE

yes

overcast

hot

normal 

FALSE

yes

rainy

mild

high

TRUE

no

数据集:​​pandas as pdimport numpy as np# 导入数据集data = pd.read_csv("play.csv")# 显示数据集print(data)# 可以看出这是一个分类变量的数据集。然后,我们就要将它变成数值变量,好利于下面的建模。from sklearn.preprocessing import LabelEncoderprint(data.columns)# 数据预处理# sklearn要求数据输入的特征值(属性)features以及输出的类,必须是数值型的值,而不能是类别值(如outlook属性中的high、overcast、rainy)# 使用LabelEncoder对特征进行硬编码(编码为0~n-1(n为种类数))labelencoder = LabelEncoder()for col in data.columns: data[col] = labelencoder.fit_transform(data[col]) # 对数据先拟合在标准化# 打印显示对应的编码print(data)print('\n')# 开始提取训练集与测试集# 导入训练集和测试集切分包from sklearn.model_selection import train_test_splity = data['play']X = data.drop('play', axis=1)# 将数据进行分割X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0,test_size=0.2, train_size=0.8)'''X:样本特征集y:样本标签集random_state:是随机数的种子。在同一份数据集上,相同的种子产生相同的结果,不同的种子产生不同的划分结果test_size:样本占比,测试集占数据集的比重,如果是整数的话就是样本的数量x_train,y_train:构成了训练集x_test,y_test:构成了测试集'''columns = X_train.columns# 接着标准化训练集# 数据标准化 保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度过大的特征值而主导。from sklearn.preprocessing import StandardScalerss_X = StandardScaler()ss_y = StandardScaler()X_train = ss_X.fit_transform(X_train.astype(float))X_test = ss_X.transform(X_test.astype(float))# 构建决策树模型from sklearn.tree import DecisionTreeClassifier# 初始化树模型model_tree = DecisionTreeClassifier() # ()里面不填任何属性默认为Gini,里面填写criterion='entropy'使用的是信息熵# 拟合数据集model_tree.fit(X_train, y_train)# 评价模型准确性:使用决策树对测试数据进行类别预测y_prob = model_tree.predict_proba(X_test)[:,1]# np.where(condition, x, y);满足条件(condition),输出x,不满足输出y。y_pred = np.where(y_prob > 0.5, 1, 0)# 预测的精准度model_tree.score(X_test, y_pred)# 可视化树图data_ = pd.read_csv("play.csv")# 特征列名data_feature_name = data_.columns[:-1]# 标签分类data_target_name = np.unique(data_["play"])import pydotplusfrom sklearn import treefrom IPython.display import Imageimport os# 设置环境变量:因为scikit-learn决策树结果的可视化需要使用到Graphvizos.environ["PATH"] += os.pathsep + 'D:\Tools\graphviz\Graphviz 0.1.1\bin'# 可视化决策树dot_tree = tree.export_graphviz(model_tree,feature_names=data_feature_name,class_names=data_target_name,filled=True, rounded=True,special_characters=True)graph = pydotplus.graph_from_dot_data(dot_tree)img = Image(graph.create_png())# 输出图片graph.write_png("out_01.png")

【运行结果】

【相关文章链接】

Graphviz的安装

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:居然长得的还没一只熊好看?用Python做一个颜值检测,结果就离了大谱
下一篇:Python基础案例练习:制作学生信息管理系统(python学生信息管理系统)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~