详解决策树-交叉验证菜菜的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决策过程的可视化

菜菜的sklearn课堂笔记支持向量机-线性SVM用于分类的原理

详解随机森林-概述菜菜的sklearn课堂笔记