将数据分成训练集和验证集“必须”根据标签进行。遇到分类问题,使用分层分割就对了。在Python中,用scikit-learn很容易就做到了。(CV)
遇到回归问题,一个简单的K-Fold分割就可以了。当然,也还有很多复杂的方法能够在维持训练集和验证集原有分布的同时将数据分割开来。这个就留给读者们自己去练习啦。

k-折交叉验证 。 k-折交叉验证将训练集划分为 k 个较小的集合(其他方法会在下面描述,主要原则基本相同)。 每一个 k 折都会遵循下面的过程:
- 将 k-1 份训练集子集作为 training data (训练集)训练模型,
- 将剩余的 1 份训练集子集用于模型验证(也就是把它当做一个测试集来计算模型的性能指标,例如准确率)。

KFold

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的变体,保留了训练和测试数据集中的类比率

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/

3749

被折叠的 条评论
为什么被折叠?



