详解决策树-交叉验证菜菜的sklearn课堂笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解决策树-交叉验证菜菜的sklearn课堂笔记相关的知识,希望对你有一定的参考价值。
均方误差mean squared error(MSE) $$ MSE=\\frac1N\\sum\\limits_i=1^N(f_i-y_i)^2 $$ 其中$N$是样本数量,$i$是每个数据样本,$f_i$是模型回归出来的数值,$y_i$是样本点$i$实际的数值标签 所以MES的本质,其实是样本正是数据与回归结果的差异。因此在回归中,我们追求的是MSE越小越好
然而,回归树的接口score返回的是R平方,并不是MSE,R平方被定义如下 $$ R^2=1- \\fracuv=1- \\frac\\sum\\limits_i=1^N(f_i-y_i)^2\\sum\\limits_i=1^N(y_i-\\haty)^2 $$ 其中$N$是样本数量,$i$是每个数据样本,$f_i$是模型回归出来的数值,$y_i$是样本点$i$实际的数值标签,$\\haty$是正是数值标签的平均数。显然$u$就是残差平方和,$v$就是总平方和
R平方可以为正为负,如果模型的残差平方和远远大于模型的总平方和,模型非常糟糕,R平方就会为负),而均方误差永远为正
值得一提的是,虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差“(neg_mean_squared_error)
交叉验证就是,我们将数据划为n份,依次使用其中一份作为数据集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确程度 训练集和测试集的划分会干扰模型的结果,因此,用交叉验证n次结果求出的平均值,是对模型效果的一个更好的度量
对于交叉验证,在sklearn中指的是cross_val_score
cross_val_score(
[estimator, X, y=None, groups=None, scoring=None, "cv=warn", n_jobs=None, verbose=0, fit_params=None, "pre_dispatch=2*n_jobs", "error_score=raise-deprecating"],
)
# estimator:估计器,也就是模型
# X:整个特征数据集
# y:整个结果数据集
# cv:测试次数,这也决定着训练集与测试集的划分
# scoring:评判标准,默认是R平方,这是使用负MSE
代码实现
from sklearn.datasets import load_boston # 波士顿房价数据集
from sklearn.model_selection import cross_val_score # 交叉验证
from sklearn.tree import DecisionTreeRegressor # 回归树
boston = load_boston()
regressor = DecisionTreeRegressor(random_state=0)
cross_val_score(regressor, boston.data, boston.target, cv=10
,scoring="neg_mean_squared_error"
)
---
array([-16.41568627, -10.61843137, -18.30176471, -55.36803922, -16.01470588, -44.70117647, -12.2148 , -91.3888 , -57.764 , -36.8134 ])
以上是关于详解决策树-交叉验证菜菜的sklearn课堂笔记的主要内容,如果未能解决你的问题,请参考以下文章
详解决策树-决策树的优缺点 & 分类树在合成数集上的表现菜菜的sklearn课堂笔记
详解支持向量机-支持向量机分类器原理菜菜的sklearn课堂笔记
详解数据预处理和特征工程-特征选择-Embedded嵌入法菜菜的sklearn课堂笔记
菜菜的sklearn课堂笔记支持向量机-线性SVM决策过程的可视化