以红酒数据集分类为例做决策树的可视化

前言

本文是决策树可视化例子

决策树原理

决策树的分类原理有ID3(信息增益最大准则)、C4.5(信息增益比准则)、CART(基尼系数最小准则)。(具体的数学原理和公式后期补充,本文是做一下决策树可视化)。

可视化决策树举例

思路步骤:1导入数据;2划分数据集;3导入树模型;#4训练与模型评估#5可视化决策树

gini

#1导入数据
from sklearn.datasets import load_wine
wine=load_wine()
#2数据集和测试集的划分
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(wine.data,wine.target,test_size=0.3,random_state=28)
#3决策树模型
model_DT=tree.DecisionTreeClassifier()#默认criterion="gini"即CART树  criterion="entropy"表信息增益
#3决策树模型
model_DT=tree.DecisionTreeClassifier()#默认criterion="gini"即CART树  criterion="entropy"表信息增益

模型的训练的分数:0.8888888888888888

print("返回每个测试样本所在的叶子节点的索引:\n{}".format(model_DT.apply(x_test)))
print("返回每个测试样本的分类结果:\n{}".format(model_DT.predict(x_test)))

模型的训练的分数:0.8888888888888888

print("返回每个测试样本所在的叶子节点的索引:\n{}".format(model_DT.apply(x_test)))
print("返回每个测试样本的分类结果:\n{}".format(model_DT.predict(x_test)))

返回每个测试样本所在的叶子节点的索引:
[10 7 10 3 7 10 9 10 10 7 3 10 9 3 10 7 7 7 3 9 3 3 3 7
3 3 7 3 10 7 9 3 10 3 9 10 10 7 3 3 10 3 3 3 5 9 7 3
10 3 10 3 10 7]
返回每个测试样本的分类结果:
[0 2 0 1 2 0 1 0 0 2 1 0 1 1 0 2 2 2 1 1 1 1 1 2 1 1 2 1 0 2 1 1 0 1 1 0 0
2 1 1 0 1 1 1 0 1 2 1 0 1 0 1 0 2]

#5可视化
#下面这个myFeatureName是红酒数据集的feature_names翻译过来的 用于可视化
myFeatureName=['酒精','苹果酸','灰','灰碱度','镁','总酚','类黄酮',
               '非类黄酮酚','花青素','颜色强度','色调','od315','脯氨酸']

#下面这部分代码是用于可视化决策树 不过得先安装好库graphviz
dot_data=tree.export_graphviz(model_DT
                              ,feature_names=myFeatureName#myFeatureName,wine.feature_names
                              ,class_names=['白云边','茅台','稻花香']#我把红酒数据集的target_names换成了这三个中文的
                              ,filled=True
                              ,rounded=True
                              ,out_file="myowntree.dot"
                              )

with open("myowntree.dot",encoding='utf-8') as f:
    dot_grah=f.read()
graph=graphviz.Source(dot_grah.replace("helvetica","FangSong"))
graph.view()

在这里插入图片描述

entropy

from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
import pandas as pd
import graphviz
import matplotlib as mpl

pd.set_option('display.max_rows', 8)

#1导入数据
wine=load_wine()

#2数据集和测试集的划分
x_train,x_test,y_train,y_test=train_test_split(wine.data,wine.target,test_size=0.3,random_state=28)
#3决策树模型
model_DT=tree.DecisionTreeClassifier(criterion="entropy")#criterion="entropy"表信息增益
#4训练模型与评估
model_DT.fit(x_train,y_train)
score=model_DT.score(x_test,y_test)
print("模型的训练的分数:{}".format(score))

模型的训练的分数:0.9074074074074074

print("返回每个测试样本所在的叶子节点的索引:\n{}".format(model_DT.apply(x_test)))
print("返回每个测试样本的分类结果:\n{}".format(model_DT.predict(x_test)))

返回每个测试样本所在的叶子节点的索引:
[12 3 12 9 3 12 6 6 12 3 6 12 6 6 6 3 3 3 6 6 6 6 6 3
2 6 3 12 12 3 8 2 12 6 9 12 12 3 8 8 12 6 6 6 12 6 3 2
12 6 12 2 12 3]
返回每个测试样本的分类结果:
[0 2 0 0 2 0 1 1 0 2 1 0 1 1 1 2 2 2 1 1 1 1 1 2 1 1 2 0 0 2 1 1 0 1 0 0 0
2 1 1 0 1 1 1 0 1 2 1 0 1 0 1 0 2]

#5可视化
# 下面这个myFeatureName是红酒数据集的feature_names翻译过来的 用于可视化
myFeatureName=['酒精','苹果酸','灰','灰碱度','镁','总酚','类黄酮',
               '非类黄酮酚','花青素','颜色强度','色调','od315','脯氨酸']

#下面这部分代码是用于可视化决策树 不过得先安装好库graphviz
dot_data=tree.export_graphviz(model_DT
                              ,feature_names=myFeatureName#myFeatureName,wine.feature_names
                              ,class_names=['白云边','茅台','稻花香']#我把红酒数据集的target_names换成了这三个中文的
                              ,filled=True
                              ,rounded=True
                              ,out_file="myowntree.dot"
                              )

with open("myowntree.dot",encoding='utf-8') as f:
    dot_grah=f.read()
graph=graphviz.Source(dot_grah.replace("helvetica","FangSong"))
graph.view()

在这里插入图片描述

总结

本文主要讲了一下决策树的可视化。(如果您发现我写的有错误,欢迎在评论区批评指正)

猜你喜欢

转载自blog.csdn.net/qq_27328197/article/details/113915198
今日推荐