python - 如何将数据随机拆分为训练集和测试集?

标签 python file-io

我有一个大数据集,想把它分成训练集(50%)和测试集(50%)。

假设我有 100 个示例存储输入文件,每一行包含一个示例。我需要选择 50 行作为训练集和 50 行测试集。

我的想法是首先生成一个长度为 100 的随机列表(值范围从 1 到 100),然后使用前 50 个元素作为 50 个训练示例的行号。测试集也是如此。

这在 Matlab 中很容易实现

fid=fopen(datafile);
C = textscan(fid, '%s','delimiter', '\n');
plist=randperm(100);
for i=1:50
    trainstring = C{plist(i)};
    fprintf(train_file,trainstring);
end
for i=51:100
    teststring = C{plist(i)};
    fprintf(test_file,teststring);
end

但是我怎样才能在 Python 中完成这个功能呢?我是 Python 新手,不知道是否可以将整个文件读入一个数组,然后选择某些行。

最佳答案

这可以在 Python 中使用列表类似地完成,(请注意,整个列表在原地打乱)。

import random

with open("datafile.txt", "rb") as f:
    data = f.read().split('\n')

random.shuffle(data)

train_data = data[:50]
test_data = data[50:]

关于python - 如何将数据随机拆分为训练集和测试集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17412439/

相关文章:

c - 记住最后执行的命令的简单历史记录

python - 我如何告诉 PyLint "it' 是一个变量,而不是一个常量“来停止消息 C0103?

python - 你能帮我用python __init__吗

C 在二进制文件中间写入而不覆盖任何现有内容

c - 从文本文件中读取一个小的正整数并递增时,结果收到一个大的负数

c# - mscorlib.dll : Access to the path . 中发生类型为 'System.UnauthorizedAccessException' 的未处理异常。被拒绝

python - 如何使用正则表达式 python 3.x 提取引号内的值

Python 3.7 urllib.request 返回 &nbsp 而不是内容

c# - 命名参数 : C# vs Python

Python:将输出保存到 csv 文件时出错?