train_test_split函数中random_state参数的含义
前言
train_test_split函数是在机器学习/深度学习算法中,用于划分数据集的函数,按一定的比例划分数据集为训练集和测试集。在使用该函数时,不太理解random_state参数的含义,通过查阅资料,了解其含义,并做记录。
train_test_split函数使用
train_test_split函数需要导包使用:
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(features,target,test_size=0.2, random_state=1)
random_state参数分析
- random_state等于不一样的值,获得的训练集和测试集的划分是不一样的。
- 通过查阅一些资料,发现很多文章都写random_state = 0 时,每次重新运行获得的训练集和测试集是不一样的,会随机划分。random_state = 非0(如1,23,100等任意非0数字)时,每次重新运行获得的训练集和测试集是一样的。
- 但是本人使用Jupyter Notebook 进行编程实验,发现无论random_state等于多少,一旦确定了一个值(0,1,2,5,100等),之后再重新运行程序,得到的训练集和测试集的划分都是一样的。但是random_state等于不同的值,就会有不同的划分结果,只是这个划分结果是确定的。
实验过程
刚开始random_state = 0,获得的结果如下:
random_state = 1,获得的结果如下:
random_state = 10,获得的结果如下:
结论总结
random_state参数的值,是设置的随机种子,train_test_split函数根据不同的随机种子,将数据集划分为训练集和测试集。如果数据集没有改变,随机种子数(即random_state值)没有改变,那么划分出来的训练集和测试集就不会改变。数据集和随机种子数改变其中一个值,那划分结果就会改变。