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