k-折划分训练集和测试集

将数据分成训练集和验证集“必须”根据标签进行。遇到分类问题,使用分层分割就对了。在Python中,用scikit-learn很容易就做到了。(CV)
遇到回归问题,一个简单的K-Fold分割就可以了。当然,也还有很多复杂的方法能够在维持训练集和验证集原有分布的同时将数据分割开来。这个就留给读者们自己去练习啦。
k-折划分训练集和测试集_第1张图片
k-折交叉验证 。 k-折交叉验证将训练集划分为 k 个较小的集合(其他方法会在下面描述,主要原则基本相同)。 每一个 k 折都会遵循下面的过程:

  • 将 k-1 份训练集子集作为 training data (训练集)训练模型,
  • 将剩余的 1 份训练集子集用于模型验证(也就是把它当做一个测试集来计算模型的性能指标,例如准确率)。
    k-折划分训练集和测试集_第2张图片

KFold

k-折划分训练集和测试集_第3张图片

from sklearn.cross_validation import KFold
eval_size = 0.10
kf = KFold(len(y), round(1.0 / eval_size))
train_indices, valid_indices = next(iter(kf))
X_train, y_train = X[train_indices], y[train_indices]
X_valid, y_valid = X[train_indices], y[valid_indices]

StratifiedKFold

StratifiedKFold是KFold的变体,保留了训练和测试数据集中的类比率
k-折划分训练集和测试集_第4张图片

from sklearn.cross_validation import StratifiedKFold
#StratifiedKFold是KFold的变体,保留了训练和测试数据集中的类比率
eval_size = 0.10
kf = StratifiedKFold(y,round(1.0 / eval_size))
train_indices, valid_indices = next(iter(kf))
X_train, y_train = X[train_indices], y[train_indices]
X_valid, y_valid = X[train_indices], y[valid_indices]

参考链接:https://scikit-learn.org/stable/modules/cross_validation.html?highlight=stratifiedkfold
http://www.scikitlearn.com.cn/0.21.3/30/

你可能感兴趣的:(数据挖掘资源整理篇,k折交叉验证)