摘要:对于算法工程师,拿到数据经常要做的事,就是将数据分割成训练集或测试集便于使用,今天就总结下一般分割数据集的几种方法。
①数据格式Dataframe,数据分割
import random
import numpy as np
data = pd.read_csv("./dataNN.csv",error_bad_lines=False)
data = np.array(data)
# 这里np数据一定要用np.random.shuffle,不要用random带的shuffle,它不适用与shuffle
np.random.shuffle(data)#随机打乱,
#取前90%为训练集
alldata = [d[0] for d in data]
df1=data[:int(0.9*len(alldata))]
#将np.array转为dataframe,并加上原数据集中的列名
df1=pd.DataFrame(df1,columns=['url','label', 'sent', 'title'])
#写入csv
df1.to_csv("./train.csv",index=False)
#剩余百分之10为测试集
df2=data[int(0.1*len(alldata)):]
df2=pd.DataFrame(df2,columns=['url','label','sent', 'title'])
df2.to_csv("./test.csv",index=False)
②sklearn中的train_test_split
from sklearn.model_selection import train_test_split
# X为数据,Y为标签,返回四个值
Xtrain,Xtest,Ytrain,Ytest = train_test_split(X,Y,test_size=0.3,random_state=420)
# 切分前数据标签的分布情况
train_data.SeriousDlqin2yrs.value_counts()
#切分后,训练集数据标签的分布情况
pd.Series(Ytrain).value_counts()