栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

sklearn学习笔记1:决策树

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sklearn学习笔记1:决策树

sklearn中决策树的类都在tree这个模块下,这个模块共包含5个类

tree.DecisionTreeClassifier

tree.DecisionTreeRegressor

tree.export_graphviz

tree.ExtraTreeClassifier

tree.ExtraTreeRegressor

一.DecisionTreeClassifier 1.重要参数

①criterion:用来决定不纯度的计算方法的,sklearn提供了两种选择

输入“entropy”,使用信息熵

输入“gini”,使用基尼系数

比起基尼系数,信息熵对不纯度更加敏感,对不纯度的惩罚更强

但在实际使用中,信息熵和基尼系数的效果基本相同

②random_state & splitter

random_state:用来设置分枝中的随机模式的参数,默认none,在高维度时随机性会表现更明显,低维度的数据随机性几乎不会显现

splitter:用来控制决策树中的随机选项的,有两种输入值,输入“best”,决策树在分枝时虽然随机,但还是会优先选择更重要的特征进行分枝;输入“random”,决策树在分枝时会更加随机,树会更深,对训练集的拟合将会降低,这也是防止过拟合的一种方式

当你预测到你的模型会过拟合,用这两个参数来帮助你降低过拟合的可能性

2.剪枝参数

①max_depth

限制树的最大深度,超过设定深度的树枝全部剪掉

这是使用的最广泛的剪枝参数,在高维度低样本量时非常有效。实际使用时,建议从 3 开始尝试,看看拟合效果再决定是否增加设定深度

②min_samples_leaf & min_samples_split

分枝会朝着满足每个子节点都包含min_samples_leaf个样本的方向去发生

一般搭配max_depth使用,在回归树中有神奇的效果,可以让模型变得更加平滑,这个参数的数量设置得太小会引起过拟合,设置得太大就会阻止模型学习数据,一般来说,建议从 5 开始使用

min_samples_split限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发生

③max_features & min_impurity_decrease

max_features是用来限制高维度数据的过拟合的剪枝参数,其方法是直接限制可以使用的特征数量而强行使决策树停下的参数,在不知道决策树中各个特征重要性的情况下,强行设定这个参数可能会导致模型学习不足

min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分值不会发生

④如何确认最优的剪枝参数?

超参数的学习曲线:一条以超参数的取值为横坐标,模型的度量指标为纵坐标的曲线,它是用来衡量不同超参数去之夏模型的表现的线

3.目标权重参数

class_weight & min_weight_fraction_leaf

完成样本标签平衡的参数

4.重要属性和接口

决策树最常用的接口有fit,score,apply和predict

apply中输入测试集返回每个测试样本所在的叶子节点的索引

predict输入测试集返回每个测试样本的标签

注意:所有接口中要求输入X_train和X_test的部分,输入的特征矩阵必须至少是一个二维矩阵,sklearn不接受任何一维矩阵作为特征矩阵被输入

二.DecisionTreeRegressor

几乎所有参数,属性及接口都和分类树一模一样

需要注意的是,在回归树中,没有标签分布是否均衡的问题,因此没有class_weight这样的参数

criterion:回归树衡量分枝质量的指标,支持的标准有三种

①输入“mse”使用均方误差,这种方法通过使用叶子节点的均值来最小化L2损失

②输入“fridman_mse”使用费尔德曼均方误差,这种指标使用费尔德曼针对潜在分枝中的问题改进后的均方误差

③输入“mae”使用绝对平均误差,这种指标使用叶节点的中值来最小化L1损失

在回归树中,MSE不只是我们的分枝质量衡量指标,也是最常用的衡量回归树回归质量的指标

回归树的接口score返回的是R平方,并不是MSE

虽然均方误差永远为正,但是sklearn中使用均方误差作为评判标准时,确是计算“负均方误差”,因此真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号