我試圖使用StratifiedKFold
創建列車/測試/ val拆分,以用於非sklearn機器學習工作流程。所以,DataFrame需要拆分,然後保持這種狀態。使用StratifiedKFold創建列車/測試/ val拆分
我試圖做類似下面,使用.values
因爲我路過熊貓DataFrames:
skf = StratifiedKFold(n_splits=3, shuffle=False)
skf.get_n_splits(X, y)
for train_index, test_index, valid_index in skf.split(X.values, y.values):
print("TRAIN:", train_index, "TEST:", test_index, "VALID:", valid_index)
X_train, X_test, X_valid = X.values[train_index], X.values[test_index], X.values[valid_index]
y_train, y_test, y_valid = y.values[train_index], y.values[test_index], y.values[valid_index]
這種失敗:
ValueError: not enough values to unpack (expected 3, got 2).
我經歷了所有的sklearn
讀docs並運行示例代碼,但沒有更好地瞭解如何在sklearn
交叉驗證方案之外使用分層k次摺疊分割。
編輯:
我也試過這樣:
# Create train/test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, stratify=y)
# Create validation split from train split
X_train, X_valid, y_train, y_valid = train_test_split(X_train, y_train, test_size=0.05)
這似乎工作,雖然我想像我這樣做與分層搞亂。
你的問題是什麼呢?這種行爲與你的期望有什麼不同? –
感謝您的回覆@RyanStout,我的錯誤 - 更新了錯誤消息。 –