《机器学习》2-2,留一法实现 假定数据集D内有m个样本,令K=m,留一法做为交叉样本的特例,不受划分样本方式的影响,因为划分m个样本的方式是唯一的,每个子集只有一个样本。 而大量模型样本数会导致算法的时间复杂度上升,同样的,完成运算需要的空间也会增大。这不适合样本数极大的运算。 (老师发VX告诉我说让我把SVC学习器换成dummyclassifiler试一试,等哪天写得动了我再换,今天写不动了)
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import LeaveOneOut
from sklearn import datasets, svm
import numpy as np
%matplotlib inline
X, Y = make_blobs(n_features=2,n_samples=100,centers=2,random_state=0)
print (X.shape)
print (Y.shape)
print (X)
print (Y)
loo = LeaveOneOut()
SVC = svm.SVC()
scores = cross_val_score(SVC, X, Y, cv=loo)
print("Number of cv iterations: ", len(scores))
print("Mean accuracy: {:.2f}".format(scores.mean()))
|