交叉验证法先将数据集D划分为k个大小相似的互斥子集(两两之间没有交集),每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后每次用k-1个子集的并集做为训练集,余下的子集做为测试集,这样就可以获得K组训练/测试集,从而可以进行k次训练和测试,最终返回的是这个k个测试结果的均值。k通常的取值是10,其他常用取值为2,5,20等。
这里使用KNN做为训练模型,采用十折交叉验证。
model = sk_neighbors.KNeighborsClassifier(n_neighbors=5,n_jobs=1) #KNN分类
import sklearn.model_selection as sk_model_selection
accs=sk_model_selection.cross_val_score(model, iris_X, y=iris_y, scoring=None,cv=10, n_jobs=1)
print('交叉验证结果:',accs)