对于每个玩家的重播,我都有一组功能,以及在不同时间段的目标值。我正在通过Scikit-learn进行分类。为了进行交叉验证,我应该设置一个约束,使得如果重播的样本位于训练集中,则测试集中应该没有该重播的其他样本。我应该定义一个拆分数据的功能,还是可以在Scikit-learn中自定义craoss验证功能?
编辑1
假设我的数据矩阵如下:replayID,时间片和该行的功能。我也有一个包含类标签的数组。
replayID Time_slice Features
data=array([[ 100, 0., 1.5,...],
[ 100, 1., 3.7,...],
[ 100, 0., 1.2,...],
[ 100, 1., 1.8,...],
[ 100, 2., 2.9,...],
[ 101, 0., 1.5,...],
[ 101, 1., 3.7,...],
[ 101, 0., 1.2,...],
[ 101, 1., 1.8,...],
[ 101, 2., 2.9,...]])
我要求训练数据中是否包含replayID = 100的样本,那么测试数据中没有其他样本且replayID = 100。此外,训练数据应为数据和测试数据的80%,即20%。
X = data[:, 1:]
y = targets
labels = data[:, 0]
cv = LabelKFold(labels, n_folds=10)
est = GradientBoostingClassifier(**params)
for train, test in cv:
X_train = X[train]
y_train = y[train]
X_test = X[test]
est.fit(X_train, y_train)
现代版本的sklearn.cross_validation
已包含您要查询的版本-包含单词的版本Label
。例如,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句