我一直在使用 CSV 数据来实现我的脚本,并希望将数据采样到两个数据集中:
- 测试数据
- 训练数据
我想对85%和15%的数据集进行采样,想输出两个CSV文件Test.csv和Train.csv
我希望它在基本 Python 中执行,并且不想使用任何其他外部模块,如 Numpy、SciPy、Pandas 或 Scikitlearn。谁能帮我按百分比随机抽样数据。此外,我将获得可能具有随机观测值的数据集。到目前为止,我刚刚阅读了有关 Pandas 和其他各种模块的信息,以按百分比为基础对数据进行采样,但还没有针对我的问题找到任何具体的解决方案。
此外,我想在两个文件中保留 CSV 的 header 。因为标题将使每一行都可访问并可用于进一步分析。
最佳答案
使用 random
random module 中的函数得到一个在 0
和 1
之间均匀分布的随机数。
如果是 > .85
写入训练数据,否则写入测试数据。参见 How do I simulate flip of biased coin in python? .
import random
with open(input_file) as data:
with open(test_output, 'w') as test:
with open(train_output, 'w') as train:
header = next(data)
test.write(header)
train.write(header)
for line in data:
if random.random() > 0.85:
train.write(line)
else:
test.write(line)
关于Python:如何将数据采样到测试和训练数据集中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009836/