在 scikit learn 中自定义交叉验证
Customizing cross validation in scikit learn
我有一组针对每个玩家回放的特征,以及不同时间片的目标值。我正在通过 Scikit-learn 进行 class 化。为了进行交叉验证,我应该设置一个约束条件,如果重放的样本在训练集中,那么测试集中应该没有来自该重放的其他样本。我应该定义一个函数来拆分数据,还是可以在 Scikit-learn 中自定义 craoss 验证函数?
编辑 1
假设我的数据矩阵如下:这一行的replayID、时间片和特征。我还有一个包含 class 标签的数组。
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
的版本。例如,
我有一组针对每个玩家回放的特征,以及不同时间片的目标值。我正在通过 Scikit-learn 进行 class 化。为了进行交叉验证,我应该设置一个约束条件,如果重放的样本在训练集中,那么测试集中应该没有来自该重放的其他样本。我应该定义一个函数来拆分数据,还是可以在 Scikit-learn 中自定义 craoss 验证函数?
编辑 1
假设我的数据矩阵如下:这一行的replayID、时间片和特征。我还有一个包含 class 标签的数组。
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
的版本。例如,