首页 > 解决方案 > 为 10 折交叉验证实验创建训练/测试 CSV 文件

问题描述

我有一个 CSV 文件 (main.csv),它有一个唯一的列 ID,它也与我的图像名称有关(减去它们的 .jpg 扩展名)。

我想做 10 折交叉验证并创建一个训练和测试 CSV,这样每个折的测试 CSV 将只包含原始 CSV 的 10%。

是否有一条直接的路径(已经完成)来做到这一点?

基本上,我希望我的最终训练和测试 CSV 文件具有相同的确切列名,但设计为我可以对它们执行 10 倍交叉验证(也就是随机抽样/混洗并选择 10%)。

我不介意在 Python 或 R 中使用 pandas。

我不打算使用 Scikit-learn 进行交叉验证,因为我正在使用自己的手动代码,这就是为什么我需要切碎的火车并为每个折叠测试 CSV。

标签: pythonrcsvmachine-learningcross-validation

解决方案


也许,您可能正在寻找这个:

from sklearn.model_selection import train_test_split
#X contains the dependent columns from the CSV file, and Y is the predicted variable
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

test_size=0.33此参数表示您要拆分多少百分比的测试数据。所有其他都是训练数据。

X_train.to_csv(file_name, encoding='utf-8', index=False)

此代码会将 X_train 数据保存到 33% 的 CSV 文件

y_train.to_csv(file_name, encoding='utf-8', index=False)

此代码会将 y_train 数据保存到 77% 的 CSV 文件

这样,您可以random_state每次更改代码中的值并保存文件,这样您就可以得到一个很好的混音。这个数字不代表什么。它随机打乱和拆分数据集。(也许,如果我们知道每个数字背后的逻辑,它就不再是随机分割了!!:))

在此之后,您可以应用手动 K 折叠。


推荐阅读