赞
踩
交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标
KFold(): KFold 将所有的样例划分为 k 个组,称为折叠 (fold) ,每组数据都具有相同的大小。每一次分割会将其中的 K-1 组作为训练数据,剩下的一组用作测试数据,一共会分割K次。
代码示例如下:
import numpy as np
from sklearn.model_selection import KFold
X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
y=np.array([1,2,3,4,5,6])
kf=KFold(n_splits=4) # 定义分成几个组
#for循环中的train_index与test_index是索引而并非我们的训练数据
for train_index,test_index in kf.split(X):
print("Train Index:",train_index,",Test Index:",test_index)
X_train,X_test=X[train_index],X[test_index]
y_train,y_test=y[train_index],y[test_index]
StratifiedKFold: 是KFold()的变种,采用分层分组的形式(有点类似分层抽样), 使每个分组中各类别的比例同整体数据中各类别的比例尽可能的相同。(它相对于KFold()方法更完善)
StratifiedKFold 分层采样交叉切分,确保训练集,测试集中各类别样本的比例与原始数据集中相同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。