决策树在sklearn中的实现

决策树在sklearn中的实现

一、sklearn

scikit-learn是一个开源的基于python语言的机器学习工具包,通过NumpyScipymatplotlibpython数值计算的库实现高效的算法应用,并且涵盖了几乎所有主流的机器学习算法。

二、决策树
1、决策树概述

决策树(Decision tree)是一种非参数的有监督学习方法,它能够从一系列有特征标签的数据中总结出决策规则,并且用树状图来呈现这些规则,以解决分类和回归问题。

2、决策树工作原理

不断的对某条数据的特征进行提问,直至得到最后的分类,即标签。

但在不加限制的情况下,一颗决策树会生长到衡量不纯度的指标最优,或者没有更多的特征可用为止,这样往往会过拟合,就是在训练集的表线上非常良好,但是在测试集上的表现很糟糕。为了让决策树有更好的泛化性,要对决策树进行剪枝。

3、决策树算法的核心–如何找到最优的树

(1)、如何从数据表中找到最佳节点和最佳分枝。

(2)、如何让决策树停止生长,防止过拟合。

由于最优的节点不一定能够生成最优的树,故sklearn建立了多棵树,从多棵树中选取最优的树。故每次选取特征时是随机选取一部分特征。

4、sklearn中的决策树

模块sklearn.tree,该模块总共包含了五个类

类名
tree.DecisionTreeRegressor回归树
tree.DecisionTreeclassfier分类树
tree.export_graphviz将生成的决策树导出为DOT格式,画图专用
tree.ExtraTreeclassfier高随机版本的分类树
tree.ExtraTreeRegressor高随机版本的回归树
5、sklearn建模基本流程及代码

(1)、实例化,建立评估模型对象

from sklearn import tree
clf=tree.DecisionTreeClassifier() #将类实例化

(2)、通过模型接口训练模型

clf=clf.fit(Xtrain,Ytrain) #使用训练集数据训练模型

(3)、通过模型接口提取需要的信息

score=clf.score(Xtest,Ytest) #导入测试集,获得模型的评分
6、重要参数

(1)、Criterion :不纯度 衡量最佳节点和和最佳分支方法的参数。不纯度越低,决策树对训练集的拟合效果越好。

不纯度是基于节点来计算的,树中的每一个节点都会有一个不纯度,子节点的不纯度一定低于父节点的不纯度。

sklearn中提供了两种方法。

1)、Criterion="entropy":使用信息熵,通常应用欠拟合的数据。

2)、Criterion="gini":使用基尼系数,通常应用于高维数据和噪音很多的数据,即容易过拟合的数据。

但是两者的差别不是绝对的,最好的办法是两种参数都试用,选取表现更好的参数。不填写默认gini

(2)、random_state:设置分枝中随机模式的参数,默认为None。

(3)、splitter:控制决策树中的随机选项

1)、splitter="best":优先选取更重要的特征进行分支。

2)、``splitter=“random”`:更加的随机。

(4)、max_depth:限制树的最大深度,超过设定深度的树枝全部剪掉,当数据高维度低样本的时候效果较好

(5)、min_samples_leaf:一个节点在分枝后的每个子节点必须包含至少min_sample_leaf个训练样本,否则分枝就不会发生。参数设置不宜过大也不宜过小,一般是从5开始使用。

(6)、min_samples_split:一个节点必须包含min_sample_split个训练样本,这个节点才允许被分枝,否则不会发生。

(7)、max_features:限制分支时考虑的特征个数,对于高维度的数据,该方法较暴力,降维最好使用PCAICA或者特征选择模块中的降维算法

(9)、min_impurity_decrease:限制信息增益的大小,信息增益小于设定数值的分枝不会发生。

7、如何确定参数的取值最优

画学习曲线

8、重要接口
clf.apply(xtest) #返回测试样本所在的叶子节点的索引

clf.predict(xtest) # 返回每个测试样本的分类/回归结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值