跑实验中的数据集划分实战

Talk is cheap, show me the executable code!

上文书说到样本划分,那具体如何操作呢?
马上来举个栗子:

  1. 使用sklean进行打乱,然后按比例截取
import sklearn
import numpy as np
# 生成数据
X = np.linspace(1,10,10)
Y = 2*X
# 随机打乱
X,Y = sklearn.utils.shuffle(X,Y,random_state=42)
#按比例,依照打乱顺序进行划分
FRAC = 0.8 
sp = int(len(X)*FRAC)
# 取得训练集合测试集
X_train, Y_train = X[:sp],Y[:sp]
X_test, Y_test = X[sp:],Y[sp:]
# =====output=====
print(X_train,Y_train,X_test,Y_test)

2.如果原数据是dataframe,可以使用sample函数进行打乱

import numpy as np
import pandas as pd
# 生成数据
X = np.linspace(1,10,30)
data_df = pd.DataFrame(list(zip(X,2*X)),columns=['data','pre_data'])

#利用sample函数打乱数据
data_df.sample(frac=1.0,random_state=42)
# 按比例,依照打乱顺序进行划分
FRAC = 0.8 
sp = int(data_df.shape[0]*FRAC)
#取得训练集合测试集
X_train,Y_train = data_df.loc[:sp-1]['data'],data_df.loc[:sp-1]['pre_data']
X_test, Y_test = data_df.loc[sp:]['data'],data_df.loc[sp:]['pre_data']

#怕数据条数不对应,可以利用assert验证
assert(X_train.shape[0]+X_test.shape[0]==data_df.shape[0])
  1. 在深度学习中也可以利用pytorch对数据进行划分
import torch
import torch.utils.data
# 生成数据
X = list(zip(np.linspace(1,10,10),2*np.linspace(1,10,10)))
dataset = torch.utils.data.DataLoader(X)
# 按比例划分,函数自带打乱功能
FRAC = 0.8 
sp = int(len(dataset)*FRAC)
t_sp = len(dataset)-sp
dataset_train,dataset_test = torch.utils.data.random_split(dataset,[sp,t_sp])
# =====output=====
dataset_train.indices,dataset_test.indices
posted @ 2020-06-10 17:44  蒙面的普罗米修斯  阅读(269)  评论(0编辑  收藏  举报