1、理论
交叉验证分为三种,holdout验证(二折验证)、K折交叉验证、留一验证。
2、实现
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import svm
iris = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4, random_state=0)
print(X_train.shape)
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
print(clf.score(X_test, y_test))
K-fold交叉验证
from sklearn.model_selection import cross_val_score
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=10)
print('linear',scores.mean())
参考:
1、ML crossvalidation 文章的代码是旧版sklearn的实现;
2、官方版v0.20cross validation实现改成train_test_split;
3、v0.20版交叉验证CSDN |