交叉验证法

基本原理

交叉验证是用来观察模型的稳定性的一种方法,我们将数据划分为n份,依次使用其中一份作为测试集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确程度。训练集和测试集的划分会干扰模型的结果,因此用交叉验证n次的结果求出的平均值,是对模型效果的一个更好的度量。
交叉验证法_第1张图片

实现代码及注释

from sklearn.datasets import load_boston
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor

# 利用datasets中的波士顿房价数据集。
boston = load_boston()
# 实例化一个树,与分类树类似。
regressor = DecisionTreeRegressor(random_state=0)
# 进行交叉验证。
# regressor模型评估器,可以是任何实例化过后的算法模型。
# boston.data数据集,不需要划分训练集与测试集,完整的数据集。
# boston_target 标签集
# cv = 10 交叉验证十次,通常为5 ,默认为5
# scoring返回衡量模型的结果,默认为R平方,neg_mean_squared_error为负均方误差

result = cross_val_score(regressor,
                boston.data,
                boston.target,
                cv=10,
                scoring = "neg_mean_squared_error")
print("交叉验证结果(负均方误差):",result)

结果展示

在这里插入图片描述
虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差“(neg_mean_squared_error)。这是因为sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字。

你可能感兴趣的:(机器学习,python,深度学习,人工智能,数据挖掘)