交叉验证是一种非常常用的对于模型泛化能力进行评估 方法,交叉验证既可以解决数据集的数据量不够大问题,也可以解决参数调优的问题。常用的交叉验证方法有:简单交叉验证(HoldOut检验,例如train_test_split)、k折交叉验证(例如KFold)、自助法
kfold是将数据集划分为K-折,只是划分数据集;
cross_val_score是根据模型进行计算,计算交叉验证的结果,你可以简单认为就是cross_val_score中调用了kfold进行数据集划分。
函数原型:
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:数据
y:预测数据
soring:调用的方法
cv:交叉验证生成器或可迭代的次数.cv可能的输入有:
-无,使用默认的三折交叉验证,
-整数,用于指定“(分层的)KFold”中的折叠数,
-用作交叉验证生成器的对象。
-一个可迭代产生的序列,测试分裂。
对于整数/无输入,如果估计器是一个分类器,并且' ' y ' '是二进制的或多类的,则使用:class: ' StratifiedKFold '。在所有其他情况下,使用:class: ' KFold '。
n_jobs:同时工作的cpu个数(-1代表全部)
verbose:详细程度
fit_params:传递给估计器的拟合方法的参数
pre_dispatch:控制并行执行期间调度的作业数量。减少这个数量对于避免在CPU发送更多作业时CPU内存消耗的扩大是有用的。该参数可以是:
1.没有,在这种情况下,所有的工作立即创建并产生。将其用于轻量级和快速运行的作业,以避免由于按需产生作业而导致延迟
2.一个int,给出所产生的总工作的确切数量
3.一个字符串,给出一个表达式作为n_jobs的函数,如'2 * n_jobs'
返回
交叉验证每次运行的评分数组
一、(分层)K折交叉验证
采用红酒数据进行交叉验证
#导入hongjiu数据
from sklearn.datasets import load_wine
#导入交叉验证数据
from sklearn.model_selection import cross_val_score,StratifiedKFold
#导入用于分类的支持向量机模型
from sklearn.svm import SVC
#载入红酒数