如何利用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:]

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-11
给一个划分比例,然后读一行文件扔一次色子,相应输出到训练或是检验集合追问

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

追答

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

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

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

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

追问

已经解决了,谢谢。

追答

//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 :习惯单行解决某些问题,

第4个回答  2014-03-11
请详细描述
相似回答