调用Python——sklearn包实现决策树

决策树

决策树简介

推荐博客:机器学习——决策树

Python代码——iris数据集

#导入包及数据集
import numpy as np
import pydotplus
from sklearn import tree
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from io import StringIO
#数据集划分
iris=load_iris()
x=np.array(iris.data)
y=np.array(iris.target)
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)
#查看划分后的数据维度
x.shape,y.shape
x_train.shape,y_train.shape
#训练决策树模型,参数criterion可选'gini'——CART(默认)或者'entropy'——C4.5
clf=tree.DecisionTreeClassifier(criterion='gini',splitter='best')
clf.fit(x_train,y_train)
#用export_graphviz将树导出为Graphviz格式,用iris.dot文件保存####此步可省略
with open("iris.dot",'w') as f:
    f=tree.export_graphviz(clf,out_file=f)
#########可视化###########
#方法一
dot_data1=tree.export_graphviz(clf,out_file=None,feature_names=iris.feature_names,class_names=iris.target_names,
                              filled=True,rounded=True,special_characters=True)
dot_data1=dot_data1.replace('\n','')####不加这行命令,根节点旁会有一个黑框方格
graph=pydotplus.graph_from_dot_data(dot_data1)
graph.write_pdf("iris.pdf")
#方法二#####不好,有黑点,尝试清楚——失败
dot_data2=StringIO()
tree.export_graphviz(clf,out_file=dot_data2,feature_names=iris.feature_names,class_names=iris.target_names,\
                              filled=True,rounded=True,special_characters=True)
graph=pydotplus.graph_from_dot_data(dot_data2.getvalue())
graph.write_pdf("irisTree.pdf")

可视化

iris.dot

在这里插入图片描述

criterion=‘entropy’

iris.pdf

在这里插入图片描述

方法二:
irisTree.pdf

在这里插入图片描述
可见,根节点旁有个黑框,很丑,尝试去除失败,如果有解决办法,可以在评论区或者私信告诉我~
尝试:
在这里插入图片描述

criterion=‘gini’

注:CART决策树一定是二叉树!
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值