我有一組用於每個玩家重放的功能,以及不同時間片的目標值。我正在通過Scikit-learn進行分類。爲了進行交叉驗證,我應該設置一個約束條件,以便如果重播樣本在列車集合中,那麼測試集中不應該有其他樣本。我應該定義一個函數來分割數據,或者我可以在Scikit-learn中定製craoss驗證函數嗎?在scikit中自定義交叉驗證學習
編輯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%。的sklearn.cross_validation
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)
請更清楚,這樣,它是達不到你正在嘗試做的潛在應答者解釋說明你的問題。一般來說,代碼示例很棒,但這裏可能沒有必要。 – eickenberg