1. 背景:

在做数据处理的时候,我们往往拿到的只是一长串的数据,没有将训练集和验证集分开,这时候如果用训练集来训练,再拿训练集来测试,显然是对模型的泛化能力没有帮助的(拿一个好看的结果来欺骗自己),这时候就需要将原始数据进行随机分割,sklearn中提供了train_test_split库用于测试集和训练集的划分。
划分以后的训练集和测试集最终可以用来进行交叉验证。

  1. 格式如下:
X_train,X_test, y_train, y_test 
=cross_validation.train_test_split(train_data,train_target,test_size=0.3, random_state=0)

train_data:待划分的原始数据。
train_target:待划分的样本标签。
test_size:浮点数表示测试集占的比例,整数表示测试集的样本个数。
random_state:随机数的种子,是为了保证每次训练结果都是一样的。不同的种子划分的随机数不同,可以随便选择一个值作为种子,注意给定了数值以后就不要修改了。

3.案例:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
df=pd.read_csv('E:/00learning//01Python/机器学习/还款预期风险预测/loan_risk_forecast/train.csv')
df.head(5)
data=np.array(df)
X=data[:,:20]
y=data[:,21]
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=1)
print('原始数据大小:{}'.format(data.shape))
print('训练集样本数据大小:{}'.format(X_train.shape))
print('测试集样本数据大小:{}'.format(X_test.shape))
print('训练集样本数据大小:{}'.format(y_train.shape))
print('训练集样本数据大小:{}'.format(y_test.shape))

结果如下:

原始数据大小:(8000, 22)
训练集样本数据大小:(5600, 20)
测试集样本数据大小:(2400, 20)
训练集样本数据大小:(5600,)
训练集样本数据大小:(2400,)
Logo

鸿蒙生态一站式服务平台。

更多推荐