sklearn 中的cross_val_score函数可以用来进行交叉验证,因此十分常用,这里介绍这个函数的参数含义。
sklearn.cross_validation.cross_val_score(estimator, X, y=None, scoring=None,
cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch=‘2*n_jobs’)
其中主要参数含义:
estimator:估计方法对象(分类器)
X:数据特征(Features)
y:数据标签(Labels)
soring:调用方法(包括accuracy和mean_squared_error等等)
cv:几折交叉验证
n_jobs:同时工作的cpu个数(-1代表全部)
使用鸢尾花数据集运行实例:
from sklearn import datasets, svm
from sklearn.model_selection import cross_val_score
iris = datasets.load_iris()
X = iris.data
y = iris.target
SVC = svm.SVC()
print(cross_val_score(SVC, X, y, cv=5, scoring='accuracy'))
运行结果:
[0.96666667 1. 0.96666667 0.96666667 1. ]
(以上内容来源于:https://blog.csdn.net/Asher117/article/details/87617702)
结果中的五个值,代表五次交叉验证每次的结果,可使用mean函数输出其平均值。
scores.mean()
注意的问题:
k折交叉验证的每一次验证中,每一份子集的数量可能不一致,例k=3时,子集大小为7 ,7,6,而每一份时的正确个数为6,5,4,这样其结果为[0.8571,0.7142,0.6667],三个数的均值为0.7460。
但是正确应为(6+5+4)/(7+7+6)=0.75