我试图使用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,我的错误 - 更新了错误消息。 –