2017-02-12 40 views
4

我对python很陌生。谁能告诉我为什么我们在分裂列车和测试集中设置随机状态为零。分裂数据集中的Python随机状态

X_train, X_test, y_train, y_test = \ 
    train_test_split(X, y, test_size=0.30, random_state=0) 

我已经看到这样的情况,其中随机状态设置为一个!

X_train, X_test, y_train, y_test = \ 
    train_test_split(X, y, test_size=0.30, random_state=1) 

这个随机状态在交叉验证中的结果是什么?

+0

'train_test_split'从哪里来? –

+0

@Scott Hunter它来自sklearn.cross_validation。但随机状态为零和一对火车和测试分裂的影响是什么? – Shelly

+1

'train_test_split'的文档是怎么说的? –

回答

7

如果random_state是0或1或任何其他整数,则无关紧要。重要的是,如果你想通过多次代码验证你的处理,它应该被设置为相同的值。顺便说一句,我看到random_state=42用于scikit的许多官方示例以及其他地方。

random_state顾名思义,用于初始化内部随机数发生器,它将决定数据在您的情况下分解为列车和测试索引。在documentation中声明:

如果random_state是None或np.random,则返回一个随机初始化的RandomState对象。

如果random_state是一个整数,那么它将用于播种一个新的RandomState对象。

如果random_state是一个RandomState对象,那么它将被传递。

这是在多次运行代码时检查并验证数据。设置random_state固定值将保证每次运行代码时都会生成相同的随机数序列。除非过程中存在其他随机性,否则所产生的结果将与往常一样。这有助于验证输出。