我有一个CSV文件(main.csv),该文件具有唯一的列ID,该列ID也与我的图像名称有关(减去其.jpg扩展名)。
我想进行10折交叉验证,并创建一个训练并测试CSV,以使每折的CSV仅包含原始CSV的10%。
是否有一条简单的途径(已经完成)来做到这一点?
基本上,我希望最终的训练和测试CSV文件具有相同的确切列名,但设计时可以对它们执行10倍交叉验证(也就是随机采样/混洗并选择10%)。
我不介意在Python或R中使用熊猫。
我不打算使用Scikit-learn进行交叉验证,因为我正在使用自己的手动代码,这就是为什么我需要切碎的火车并测试每个折叠的CSV。
答案 0 :(得分:0)
也许,您可能正在寻找它:
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数据保存到CSV文件中,占77%
这样,您可以每次在代码中更改random_state
的值并保存文件,这样您就可以轻松完成。该数字不代表任何东西。它随机洗牌并拆分数据集。 (也许,如果我们知道每个数字背后的逻辑,它将不再是一个随机的分裂!:))
此后,您可以手动进行K折。