详解 Scikit-learn 的 model_selection.cross_val_score函数:计算交叉验证得分

  • Post category:Python

下面就是Scikit-learn的sklearn.model_selection.cross_val_score函数的详细解释。

作用

sklearn.model_selection.cross_val_score函数的作用是对于给定的算法和数据集,计算训练集和测试集的交叉验证得分。

这个函数可以帮助我们评估不同算法或同一算法不同参数的性能,从而找到最优的机器学习模型。

使用方法

sklearn.model_selection.cross_val_score函数的使用方法如下所示:

from sklearn.model_selection import cross_val_score

scores = cross_val_score(estimator, X, y, cv=None)

其中,各参数的含义如下:

  • estimator:估算器对象。
  • X:训练数据集。
  • y:训练样本目标值。
  • cv:确定交叉验证的分割策略,如何分成K折。默认为None,使用3折。

cross_val_score函数默认使用3折交叉验证,对于K-fold交叉验证,一共会进行K次训练和验证,并返回K次得分的平均值。

下面我们来用两个实例详细解释如何使用cross_val_score函数。

第一个实例

我们以手写数字识别数据集为例进行演示,代码如下所示:

from sklearn.datasets import load_digits
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier

digits = load_digits()
X = digits.data
y = digits.target

clf = DecisionTreeClassifier() 
scores = cross_val_score(clf, X, y, cv=10)
print("Decision Tree Classifier Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))

在上面的代码中,我们首先通过load_digits()函数加载手写数字识别数据集,将数据集分为特征X和目标y两个部分。然后我们通过DecisionTreeClassifier()函数来创建一个决策树分类器,并通过cross_val_score()函数对分类器进行10次交叉验证。最后,我们打印出决策树分类器的平均准确率以及标准差的两倍。

运行上面的代码,结果如下所示:

Decision Tree Classifier Accuracy: 0.83 (+/- 0.06)

从结果可以看出,决策树分类器的平均准确率为0.83,标准差的两倍为0.06。

第二个实例

我们以线性回归器作为训练器来进行演示,代码如下所示:

from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score

boston = load_boston()

X = boston.data
y = boston.target

regression = LinearRegression()

scores = cross_val_score(regression, X, y, cv=5)

print("Linear Regression Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))

在上面的代码中,我们通过load_boston()函数来加载房价数据集,将数据集分为特征X和目标y两个部分。然后,我们通过LinearRegression()函数来创建一个线性回归器,并使用cross_val_score()函数对回归器进行5次交叉验证。最后,我们打印出线性回归器的平均准确率以及标准差的两倍。

运行上面的代码,结果如下所示:

Linear Regression Accuracy: 0.35 (+/- 0.55)

从结果可以看出,在房价数据集上,线性回归器的平均准确率为0.35,标准差的两倍为0.55。由此,我们可以判断出这个模型并不是一个很好的模型,需要继续优化。

总结

这就是sklearn.model_selection.cross_val_score函数的完整攻略。我们可以看到,这个函数非常方便、简单,只需传入我们的算法和数据就可以轻松进行交叉验证,并得到算法的准确率。这个函数是机器学习中重要的辅助函数,可以帮助我们找到最优的模型。