2016-02-01 41 views
2

我有一組用於每個玩家重放的功能,以及不同時間片的目標值。我正在通過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) 
+0

請更清楚,這樣,它是達不到你正在嘗試做的潛在應答者解釋說明你的問題。一般來說,代碼示例很棒,但這裏可能沒有必要。 – eickenberg

回答

1

當代版本已經包含版本供你問 - 那些包含單詞Label。例如,

+0

如果我使用LabelKFold方法,我怎樣才能將火車和測試數據分別分成80%和20%。 – YNr