测试集和训练集8:2切分
最近接到个需求:测试集和训练集8:2切分,翻阅了很多资料封装了一个切分方法。
首先介绍下shuffle()函数
shuffle() 方法将序列的所有元素随机排序。
import randomrandom.shuffle (lst )
注意:shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
切分对象是一个列表
def split(full_list, shuffle=False, ratio=0.2):
n_total = len(full_list)
offset = int(n_total * ratio)
if n_total == 0 or offset < 1:
return [], full_list
if shuffle:
random.shuffle(full_list)
sublist_1 = full_list[:offset]
sublist_2 = full_list[offset:]
return sublist_1, sublist_2
if __name__ == "__main__":
li = range(5)
sublist_1,sublist_2 = split(li,shuffle=True,ratio=0.2)
print sublist_1,len(sublist_1)
print sublist_2,len(sublist_2)
切分文本
机器学习的数据集是存放在文本当中如何切分?
小编是把每条数据放到一个list,然后在进行切分。
full_list= []
with open(filename, 'r')as f:
for line in f:
# 删除每一行的换行符
line = line.rstrip()
if line:
full_list.append(line)
# 如果有空行跳过继续
else:
continue
def split(full_list, shuffle=False, ratio=0.2):
n_total = len(full_list)
offset = int(n_total * ratio)
if n_total == 0 or offset < 1:
return [], full_list
if shuffle:
random.shuffle(full_list)
sublist_1 = full_list[:offset]
sublist_2 = full_list[offset:]
return sublist_1, sublist_2
#接下来就可以把 sublist_1, sublist_2 分别写到tesx.txt,train.txt
如果想修改比例按自己想要的比例划分
if __name__ == "__main__":
li = range(5)
sublist_1,sublist_2 = split(li,shuffle=True,ratio=0.2)
print sublist_1,len(sublist_1)
print sublist_2,len(sublist_2)
修改此处的ratio = 0.2会覆盖掉函数的ratio
本文介绍了如何按照8:2的比例切分测试集和训练集,涉及random.shuffle()函数用于随机排序列表,以及如何将数据集转化为列表进行切分。同时还提供了解决方案,以适应自定义比例的切分需求。
1306

被折叠的 条评论
为什么被折叠?



