在python机器学习过程中,数据切分器train_test_split函数用的算是最多的了,每次对数据进行预测的时候这个函数都是必不可少的。其具体含义是,将数据切分成训练和测试两个部分,其函数原型为sklearn.model_selection.train_test_split(*array, **option)。
参数说明:
*array:一个或多个数据集
test_size:一个浮点数,整数或者None,指定测试集的大小(浮点数大小必须在0-1之间,代表测试集占原始数据集的比例;如果是整数的话代表测试集的大小;None:代表测试集大小就是原始数据集大小减去训练集大小,如果训练集大小也设置为None,则test_size设为0.25)。
train_size:和test_size类似,表示为一个浮点数,整数或者None,指定测试集的大小(浮点数大小必须在0-1之间,代表训练集占原始数据集的比例;如果是整数的话代表训练集的大小;None:代表测试集大小就是原始数据集大小减去测试集大小,如果测试集大小也设置为None,则train_size设为0.75)。
random_state:一个整数,或者一个RandomState实例,或者为None。(如果为整数,则它指定了随机数生成器的种子;如果为RandomState实例,则制定了随机数生成器;如果为None,则使用默认的随机生成数据)
stratify:一个数组对象或者None。如果它不是None,则原始数据会分层采样,采样的标记数组由参数指定。
返回值:train_test_split的返回值为一个列表,一次给出一个或多个数据集的划分结果。每个数据集都划分为两个部分。
示例代码如下:
from sklearn.model_selection import train_test_split
x=[[1,2,3,4],
[11,12,13,14],
[21,22,23,24],
[31,32,33,34],
[41,42,43,44],
[51,52,53,54],
[61,62,63,64],
[71,72,73,74],
[81,82,83,84]]
y=[1,1,0,0,1,1,0,0,1]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
print("x_train= ", x_train)
print("x_test= ", x_test)
print("y_train= ",y_train)
print("t_test= ", y_test)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0,
stratify=y)
print("stratify_x_train= ", x_train)
print("stratify_x_test= ", x_test)
print("y_train= ",y_train)
print("stratify_t_test= ", y_test)
运行结果如下图:
数据切分器示例
这里给出了9个样本,其类别分别是1,1,0,0,1,1,0,0,1,分别采用非分层采样和分层采样,通过如上运行结果我们可以看到如下结果:
1、对于分层采样,训练集中的样本有4个属于类别1,两个属于类别0;测试机中的样本有一个属于类别1,两个属于类别0.
2、对于分层采样,训练集中的样本有3个类别属于1,三个类别属于0;测试机中则是2个类别属于1,1个类别属于0.
由上述结果可以看出,分层采样保证了训练集和测试集中各类别样本的比例与原样本保持一致。关于test_size参数,根据参数说明9*0.3=2.7,但是这里根据实际情况调整成了3个样本。
领取专属 10元无门槛券
私享最新 技术干货