如何利用python将txt文件划分训练集和测试集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用python将txt文件划分训练集和测试集相关的知识,希望对你有一定的参考价值。

总共有一个文件,针对每一个用户对项目的评价,按照8:2的比例对项目分出训练集和测试集。分出来的格式还是这样的3列。
数据格式是
user_id item_id rating_value
1 101 5
1 102 3
1 10 3
1 103 5
1 104 2
1 105 5
1 106 5
1 107 5
1 108 5
1 109 3
1 110 4
1 111 5
1 112 4
1 113 5
1 11 4
1 114 5
1 115 5
1 116 5
1 117 5
……

“按照8:2的比例对项目分出训练集和测试集”:从数据源中随机抽取80%的数据作为“训练集”,其余的是“测试集”

import random

with open("datasource.txt", 'rt') as handle:
    dataset = [map(int, ln.split()) for ln in handle]

# 乱序
random.shuffle(dataset)

# [训练集, 测试集]
pos = len(dataset) *.8
parts = dataset[:pos], dataset[pos:]

参考技术A 给一个划分比例,然后读一行文件扔一次色子,相应输出到训练或是检验集合追问

这个思路很好,色子不是只有6面么?我想用8:2的比例,按照4:1的设置,具体怎么做呢?

追答

用随机数啊 小于.8分到训练 大于.8分到检验。 最后统计一下实际的划分比例

参考技术B 你可以按照行数%10,将小于8的写到一个文件中,将8,9写到另一个文件中。
也可以将所有的行都读到list中(如果文件不是几十或者几百M那么大的话),得到列表的长度,也就是总行数,然后将len/10*8行之前的写到一个文件中,剩下的写到另一个文件中。

不知道你的意思是这个吗?本回答被提问者采纳
参考技术C 把问题描述具体清晰,若是描述不清就列出:输入样例和输出样例。这样才好一行解决,追答

是否存在一个问题,它必须多行解决而不能单行解决?

追问

已经解决了,谢谢。

追答

//tieba.baidu.com/i/sys/jump?un=yiyuezhuo" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="yiyuezhuo" target="_blank" class="at">@yiyuezhuo :习惯单行解决某些问题,

参考技术D 请详细描述

python生成图像样本的训练集、验证集和测试集

参考技术A 准备好图像样本和标注文件后,需对样本集进行划分,生成训练集、验证集和测试集

我的目录结构:

将样本按 training : validation : testing = 8:1:1,实现在images和labels同级目录下创建文件夹train,val,test,将按比例生成的数据存放到相应的位置。

以上是关于如何利用python将txt文件划分训练集和测试集的主要内容,如果未能解决你的问题,请参考以下文章

划分训练、测试集和数据观察

目标检测---数据集格式转化及训练集和验证集划分

如何将数据集划分为训练集和测试集?

python生成图像样本的训练集、验证集和测试集

如何把数据集划分成训练集和测试集

Alink漫谈 : 如何划分训练数据集和测试数据集