决策树的建模与可视化(一)

本文深入浅出地介绍了决策树的建模过程,包括特征选择、分裂准则和剪枝策略。通过实例展示了如何使用Python的scikit-learn库构建并可视化决策树模型,帮助读者更好地理解和运用这一机器学习算法。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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


wine = load_wine()  # 返回的是一个字典
print(wine.data)
print(wine.target)


# 把data和target合并到一起
datas = pd.concat([pd.DataFrame(wine.data), pd.DataFrame(wine.target)], axis=1)
print(datas)

feature_names = wine.feature_names
target_names = wine.target_names
print(feature_names)
print(target_names)


# 切分数剧集
x_train, x_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.3)


# 建立模型
clf_01 = DecisionTreeClassifier(criterion='gini')
clf_02 = DecisionTreeClassifier(criterion='entropy')

clf_01 = clf_01.fit(x_train, y_train)
clf_02 = clf_02.fit(x_train, y_train)

score_01 = clf_01.score(x_test, y_test)
score_02 = clf_02.score(x_test, y_test)

print(score_01)
print(score_02)


# 画出一张图看一看
dot_data = tree.export_graphviz(clf_01
                                , out_file=None
                                , feature_names=feature_names
                                , class_names=target_names
                                , filled=True
                                , rounded=True
                                )
graph = graphviz.Source(dot_data)
# graph.view()  pdf图片保存到当前目录


# 查看当前模型当中每一个咧=列,也就是特征的重要性权重
print(clf_01.feature_importances_)
print([*zip(feature_names, clf_01.feature_importances_)])


# 可以发现,决策树每次生成的模型选择的结点分类标签都不一样
# 这是因为,每一次我运行的时候,数据集都是随机分配的
# 而且,决策树并不会使用所有的特征,所以制定一个个常数。那么这个时候就不变化了
clf_03 = DecisionTreeClassifier(criterion='gini', random_state=30)
clf_03 = clf_03.fit(x_train, y_train)
score_03 = clf_03.score(x_test, y_test)
print(score_03)
print(clf_03.feature_importances_)
print([*zip(feature_names, clf_03.feature_importances_)])


# 另一个参数splitter,也是控制模型的随机性
clf_04 = DecisionTreeClassifier(criterion='gini', splitter='random')
clf4 = clf_04.fit(x_train, y_train)
score = clf_04.score(x_test, y_test)
print(score)












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值