sklearn(一)、决策树

决策树的工作原理
决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。
例如,根据物种的所有特征来判断属于什么物种
在这里插入图片描述
我们的目标是将物种分为哺乳类与非哺乳类,决策树的计算结果如下:
在这里插入图片描述
根据决策树,要判断一种动物是不是哺乳动物,只需要看它的体温是不是恒温,胎生还是卵生就可以了,体温与胎生就是判断的特征。

综上,可以看出,在这个决策过程中,我们一直在对记录的特征进行提问。最初的问题所在的地方叫做根节点,在得到结论前的每一个问题都是中间节点,而得到的每一个结论(动物的类别)都叫做叶子节点

决策树算法的核心就是解决两个问题:
1、如何在数据表中找出最佳节点与分支
2、如何限制树的大小,防止过拟合
过拟合:即在训练集中表现得很好,在测试集中表现得非常糟糕;原理为树长得太大,包含了很多的训练集噪声等,不具有普遍性)

sklearn中的决策树
模块sklearn.tree

tree.DecisionTreeClassifier 分类树
tree.DecisionTreeRegressor 回归树
tree.export_graphviz 将生成的决策树导出为DOT格式,画图专用
tree.ExtraTreeClassifier 高随机版本的分类树
tree.ExtraTreeRegressor 高随机版本的回归树

接下来,我们介绍一下sklearn的基本建模流程
1、实例化,建立评估对象模型【确定模型需要用到的参数】
2、通过模型接口训练模型【输入数据】
3、通过模型接口提取需要的信息【输出决策树结果】

然后我们实战建立一棵分类树:
第一步,导入相应的库

#导入sklearn的树模块
from sklearn import tree
#导入sklearn的红酒数据集
from sklearn.datasets import load_wine
#导入分类模块,把数据集分为训练集与测试集
from sklearn.model_selection import train_test_split

第二步,实例化数据集

#将红酒数据集实例化
wine = load_wine()
#并且查看数据集的维度
wine.data.shape

在这里插入图片描述
返回的结果如上,表示数据共有13个特征,共有178行数据(数据的长度)

Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size = 0.3)
#返回训练集的数据维度
Xtrain.shape
#返回测试集的数据维度
Xtest.shape

在这里插入图片描述

#实例化
clf = tree.DecisionTreeClassifier(criterion="entropy")
#用训练集数据训练模型
clf = clf.fit(Xtrain, Ytrain)
#导入测试集,从接口中调用需要的信息
score = clf.score(Xtest, Ytest) #返回预测的准确度
score

在这里插入图片描述
我们求得的准确度为94.4%

#为数据集的特征命名,并且作图观察
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']
#导入绘图模块
import graphviz
dot_data = tree.export_graphviz(clf,feature_names= feature_name,class_names=["琴酒","雪莉","贝尔摩德"],filled=True,rounded=True)
graph = graphviz.Source(dot_data)
graph

决策树如下所示:
在这里插入图片描述
到这里,一棵决策树就算完成啦,从树中,我们可以观察到,根据特征的精确划分,越往下,颜色越深,代表酒的品种准确度越高。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值