python - 为 10 折交叉验证实验创建训练/测试 CSV 文件
问题描述
我有一个 CSV 文件 (main.csv),它有一个唯一的列 ID,它也与我的图像名称有关(减去它们的 .jpg 扩展名)。
我想做 10 折交叉验证并创建一个训练和测试 CSV,这样每个折的测试 CSV 将只包含原始 CSV 的 10%。
是否有一条直接的路径(已经完成)来做到这一点?
基本上,我希望我的最终训练和测试 CSV 文件具有相同的确切列名,但设计为我可以对它们执行 10 倍交叉验证(也就是随机抽样/混洗并选择 10%)。
我不介意在 Python 或 R 中使用 pandas。
我不打算使用 Scikit-learn 进行交叉验证,因为我正在使用自己的手动代码,这就是为什么我需要切碎的火车并为每个折叠测试 CSV。
解决方案
也许,您可能正在寻找这个:
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 折叠。
推荐阅读
- sql - 如何使用 SELECT 从另一个表中添加列
- javascript - 根据文本量调整引导按钮高度
- django - 如何在 django 中显示其他用户信息
- javascript - 得到 UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT error on nodejs while call the same api 5000 次
- javascript - WebdriverIO browser.element 无法在 DOM 中定位现有元素
- java - Tomcat 中的活动会话数
- c# - 页面重新加载几次后退出
- reactjs - 在反应中从状态对象中删除项目(奇怪的渲染)
- html - 如何通过 Telegram 创建链接以联系特定电话号码?
- c# - 从 SQL 服务器读取数据到 UWP - 错误:System.Data.SqlClient.SqlException