前言
从事的是自然语言处理的工作,之前做的demo都是小于100万的数据集,使用强大的excel可轻松handle
现遇到了大约200万的训练样本,要随机化处理。虽然知道sklearn有可以随机划分训练集测试集的函数,也是一种方法。但这里采用的是一种可自由设置数据格式的方法pandas,先上代码,很简洁的。
import numpy as np
import random
import csv
import pandas as pd
all_data_df = pd.read_csv("input_data.csv", sep='\t', header=None,names=["org_index", "s1", "s2", "label"])
#使用pandas 读取csv原始数据,保存为pandas数据格式(同表格形式)
all_data_df['random']=random.uniform(0,1) #增加一列,命名为random,值为随机数
df_frame = pd.DataFrame(all_data_df) #将pandas数据格式转化为DataFrame
df_frame = df_frame.sort_index(by='random')
#将所有数据安装random列排序,达到随机打乱样本的效果
df_frame = df_frame.set_index(['org_index'])#为打乱后数据重新建立索引
df_frame = df_frame.reset_index(drop=True)#重新生成新索引,丢弃原始索引
df_frame.reset_index(level=None)#新索引,从头开始自动递增
df_frame.to_csv(path_or_buf="output_random_data.csv", sep='\t', na_rep='', float_format=None, columns=["s1", "s2", "label"], header=True, index=True, mode='w', encoding="utf8") #将数据保存为csv格式,即可得到随机后的样本,且索引重新生成
输入文件为:input.csv 输出文件为:output_random_data.csv 随机化后的数据样本
数据格式为 :
第一列是索引 org_index ,第二列是句子1, 第三列是句子2 ,第四列 是标签(其中0表示两个句子不相似,1表示两个句子相似)。每列直接用制表符“\t”进行分隔。
代码处理步骤,模拟表格处理操作
1,新增加数据列
2,在新增加的数据列中生成随机数
3,将所有数据安装随机数那列进行排序
4,将第一列索引重新赋值即可
然后就可以使用文本编辑器安装数据比较划分训练集和测试集啦。该代码仅用于可以使用文本编辑器打开的数据规模,还没有达到真正海量的数据处理,适合中等规模数据处理方法。