我为每个玩家的重播提供了一组功能,并且在不同的时间片上有一个目标值。我正在通过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)
答案 0 :(得分:1)
当前版本的sklearn.cross_validation
已经包含了您要求的版本 - 包含Label
一词的版本。如,