• 登录
Skip to content

一起大数据-技术文章心得

一起大数据网由数据爱好者发起并维护,专注数据分析、挖掘、大数据相关领域的技术分享、交流。不定期组织爱好者聚会,期待通过跨行业的交流和碰撞,更好的推进各领域数据的价值落地。

Menu
  • 首页
  • 大数据案例
  • 数据&电子书
  • 视频
    • Excel视频
    • VBA视频
    • Mysql视频
    • 统计学视频
    • SPSS视频
    • R视频
    • SAS视频
    • Python视频
    • 数据挖掘视频
    • 龙星计划-数据挖掘
    • 大数据视频
    • Machine Learning with Python
  • 理论
    • 统计学
    • 数据分析
    • 机器学习
    • 大数据
  • 软件
    • Excel
    • Modeler
    • Python
    • R
    • SAS
    • SPSS
    • SQL
    • PostgreSQL
    • KNIME
  • 技术教程
    • SQL教程
    • SPSS简明教程
    • SAS教程
    • The Little SAS Book
    • SAS EG教程
    • R语言教程
    • Python3教程
    • IT 技术速查手册
    • Data Mining With Python and R
    • SAS Enterprise Miner
  • 问答社区
  • 我要提问
Menu
tree

sklearn决策树可视化以及输出决策树规则

Posted on 2023年5月16日

目录

  • 加载数据
  • 以文本的形式显示决策树规则
  • 决策树可视化
    • 关键参数
  • 可视化解释

加载数据

from matplotlib import pyplot as plt
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier 
from sklearn import tree

# Prepare the data data
iris = datasets.load_iris()
X = iris.data
y = iris.target

# Fit the classifier with default hyper-parameters
clf = DecisionTreeClassifier(random_state=1234)
model = clf.fit(X, y)

以文本的形式显示决策树规则

text_representation = tree.export_text(clf)
print(text_representation)

# Save rules
with open(os.path.join(DATA_DIR, "decistion_tree.log"), "w") as fout:
    fout.write(text_representation)

输出如下

决策树可视化

fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(
    clf, 
    feature_names=iris.feature_names,  
    class_names=iris.target_names,
    filled=True
)

# Save picture
fig.savefig("decistion_tree.png")

可视化效果如下:

tree

关键参数

max_depth(default=None):最大深度。当决策树过深的时候可以只画一部分。

fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(
    clf, 
    feature_names=iris.feature_names,  
    class_names=iris.target_names,
    filled=True,
    max_depth=1
)

class_names: list of str or bool, default=None
这个参数值只和分类问题有关。如果填入标签名称的话,那么就会用名称表示;如果是True的话,就会用编码来表示标签(也就是 “y[0]”, “y[1]”, …)——升序排列

fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(
    clf, 
    feature_names=iris.feature_names,  
    class_names=True,
    filled=True
)

注意我们原先填入的标签名称为

feature_names: list of strings, default=None
如果填入特征的名称的话,就会用特征名称表示;如果设置为None,那么就会用(“X[0]”, “X[1]”, …)来进行表示(同class_names)

fig = plt.figure(figsize=(25,20))
_ = tree.plot_tree(
    clf, 
    feature_names=None,  
    class_names=True,
    filled=True
)

注意我们原先填入的特征名称为

可视化解释

gini基尼不纯度(gini impurity):用来衡量节点的纯度。具体来说,如果我们根据数据集的标签分布情况,来判断样本的标签,那么判断错的概率就是gini impurity。因此公式如下。
如果gini是0,表示该节点是“纯的”,也就是说该节点的样本全都属于同一类;如果是大于0的,那么说明该节点中的样本属于不同的类。gini越大,就代表“混乱”的程度越大,也就是每种类型出现的程度越相近。比如,P1=0.5,P2 = 1 – P1 = 0.5,gini = 0.25 + 0.25 = 0.5;P1=0.9,P2 = 1 – P1 = 0.1,gini = 0.09 + 0.09 = 0.18。

samples:当前节点所包含的样本数量。比如上图中,Depth 0中,包含150个样本,Depth1的右边节点,包含100个样本。

values:表示在当前节点的样本中,分别属于三个类别的样本数量有多少。比如目前这个图是个3分类问题,那么属于类别【s,ve,vi】的分别有【50,50,50】。

class:表示如果当前节点会把样本判断属于哪个标签。比如Depth2的左边节点,这个时候节点就根据样本的分布(第二个标签ve的样本最多),然后判断样本都属于ve标签下。

参考资料:
https://scikit-learn.org/stable/modules/generated/sklearn.tree.plot_tree.html?highlight=plot_tree#sklearn.tree.plot_tree
https://scikit-learn.org/stable/modules/generated/sklearn.tree.export_text.html
https://mljar.com/blog/visualize-decision-tree/

恭喜你,又看完一篇文章,扫码领个红包吧!图片

发表评论 取消回复

要发表评论,您必须先登录。

推荐访问

欢迎加入我们的付费交流社群,增长见识,互帮互助! 自2023-05-01起正式运营。
图片

数据分析交流:数据分析交流
Excel学习: Excel学习交流
Python交流:一起学习Python(数据分
SQL交流:一起学习SQL(数据分析
微博:一起大数据

最新提问

  • 统计方面的3个Python包
  • 更新R及Rstudio
  • TFP CausalImpact:一个Python包,用于估计设计干预对时间序列的因果效应
  • 根据公式的结构,写出计算的表达式,并结算结果
  • excel中提取超级链接公式中的链接地址
  • 用python解析公式并进行可视化
  • Python设置镜像源默认为清华的方法
  • VAR、VMA、VARMA 和 ARIMA
  • Python 的表达式解析库来解析公式
  • PandasAI:一个Python库,将生成式AI能力集成到Pandas中,允许进行高级数据分析任务,例如数据合成和增强

文章标签

AMOS CBC Excel GBDT KNN Modeler Mysql pandas PostgreSQL python python数据可视化 R SAS sklearn SPSS SQL SVM Tableau TensorFlow VBA 主成分分析 关联规则 决策树 协同过滤 可视化 因子分析 大数据 大数据分析 推荐系统 数据分析 数据可视化 数据挖掘 数据透视表 文本挖掘 时间序列 机器学习 深度学习 神经网络 结构方程 统计学 联合分析 聚类 聚类分析 逻辑回归 随机森林
©2023 一起大数据-技术文章心得 | Design: Newspaperly WordPress Theme