首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Part6—scikit-learn玩转决策树

决策树系列文章从理论说到Python实现,终于到了最后一篇,使用决策树算法库。

1.scikit-learn决策树算法库

scikit-learn决策树算法库包含分类决策树DecisionTreeClassifier回归决策树DecisionTreeRegressor,下面对这两个决策树类的一些重要参数进行介绍:

DecisionTreeClassifier

criterion:特征选择标准,'gini'/'entropy'分别表示基于基尼系数和信息增益选择特征;

splitter:特征划分点选择标准,'best'表示在特征的所有划分点中找出最佳的划分点;'random'表示随机地在部分划分点中找最佳划分点;样本数据量很大时适合使用'random';

max_depth:决策树的最大深度,默认为None表示不会限制决策树深度;

min_samples_split:子树再划分所需的最小样本数,如果内部节点的样本数小于该阈值,则不再对该节点进行划分;

in_samples_leaf:叶子节点的最小样本数,如果叶子节点中的样本个数小于该阈值,该叶子节点及其兄弟节点会被剪枝;

min_weight_fraction_leaf:叶子节点最小样本权重和,如果叶子节点所有样本权重和小于该阈值,则该叶子节点及其兄弟节点会被剪枝;如果样本分布类别差别很大或者样本缺失值较多则考虑使用该参数;

max_features:划分时考虑的最大特征数,默认None表示考虑所有特征数;'log2'表示划分时考虑log2N个特征;'sqrt'/'auto'表示划分时考虑sqrt(N)个特征;整数表示考虑的特征绝对数;浮点数表示考虑特征数的百分比。

random_state:如果是int,表示随机数字发生器的种子;如果是RandomState,表示随机数字发生器;如果是None,随机数字发生器是np.random使用的RandomState instance;

max_leaf_nodes:最大叶子节点数,默认None表示不限制最大叶节点数,如果特征较大的话可以考虑使用该参数,防止过拟合;

min_impurity_decrease:节点划分的不纯度减小阈值,如果节点划分后不纯度减小量大于该阈值,则对该节点进行划分;

min_impurity_split:节点划分最小不纯度,如果节点的不纯度小于该阈值,则该节点不再进行划分;

class_weight:指定样本类别的权重,防止偏向于样本数据过多的类别,如果样本类别分布没有明显的偏差,可以使用默认值None;使用'balanced'表示算法会自行计算权重,样本数少的类别权重会高;也可以自行指定权重;

presort:是否预分类数据以加速训练时最好分类的查找。

DecisionTreeRegressor

criterion:特征选择标准,'mse'/'mae'分别表示基于均方差、均值差绝对值之和来选择特征;

其余参数的意义与DecisionTreeClassifier中的一致。

2.DecisionTreeClassifier演练

下面以鸢尾花数据集为样本,使用scikit-learn决策树算法库,拟合决策树模型并对其进行可视化。

最后得到样本数据的分类图以及可视化后的决策树如下所示:

看到这里,关于决策树的分享就全部结束了,希望你我都有收获,下次再见了!

Coding Your Ambition!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181223G0STQJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券