Python中的random_state参数
random_state参数
刚踩进机器学习的坑,在熟悉算法的路上用的读代码的笨办法,在看KNN算法的代码的时候看到了一个random_state参数
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=2003)
看这段代码只知道是在拆分数据集为训练集和测试集,但是一开始不知道random_state这个参数的意义,随机状态到底是什么意思,为什么要设置为2003,出于好奇就去求解了。
发现 random_state 相当于随机数种子random.seed() 。random_state 与 random.seed() 作用是相同的。
random.seed() 就是控制随机数生成器,如果设置相同的随机数种子,之后再调用它的时候生成的随机数就是相同的,像这里的情况就是为了让拆分的数据集每次拆分的结果是相同的,如果不设定随机数种子可能就导致每一次训练集和测试集都不同,在后续训练模型的时候结果可能会出现差别。
因此这个时候需要控制随机状态,如果设置不同的random_state参数或者不设置random_state参数,数据集的结果可能完全不同,相当于要给这个随机的过程添加一个固定的控制器,否则对于模型和结果都可能出现很大的不确定性。^^
在机器学习里面好像有不少地方都会用到random_state这个参数,除了拆分数据集之外,在构建模型,生成数据集时都会用到。