我有一個數據框,其中每個樣本都屬于一個組。例如:df = a b c group 1 1 2 G1 1 6 1 G1 8 2 8 G3 2 8 7 G2 1 9 2 G2 1 7 2 G3 4 0 2 G4 1 5 1 G4 6 7 8 G5 3 3 7 G6 1 2 2 G6 1 0 5 G7我想運行cross_val_predict,同時確保來自同一組的所有樣本都在測試中或所有樣本都在訓練中。我想將數據分成 4 份 - 但要確保來自同一組的所有行都在測試或訓練中。因此,例如,第 0,1 行和第 4,5 行將在訓練中,但第 3、6 行 (G3) 將在測試中這可能嗎?我在文檔中看到了grouparg,但不是很清楚,也沒有找到任何示例。
1 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
用作inGroupKFold
的參數:cv
cross_val_predict()
scores = cross_val_score(model, X, y, groups, cv=GroupKFold())
請注意,groups
數組表示我們希望在同一訓練/測試集中的數據組。它不是類標簽數組。
例如:
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GroupKFold, cross_val_score
X, y = make_blobs(n_samples=15, random_state=0)
model = LogisticRegression()
groups = [0,0,0,1,1,1,1,2,2,2,2,3,3,3,3]
scores = cross_val_score(model, X, y, groups, cv=GroupKFold(n_splits=3))
print('cross val scores: {}'.format(scores))
- 1 回答
- 0 關注
- 93 瀏覽
添加回答
舉報
0/150
提交
取消