随机状态(伪随机数)在Scikit学习

我想在scikit学习中实现一个机器学习algorithm,但我不明白这个参数random_state做什么? 我为什么要用它?

我也不明白什么是伪随机数字。

train_test_split将数组或matrix分解为随机train_test_split和testing子集。 这意味着每次运行它时都没有指定random_state ,您将得到不同的结果,这是预期的行为。 例如:

运行1:

 >>> a, b = np.arange(10).reshape((5, 2)), range(5) >>> train_test_split(a, b) [array([[6, 7], [8, 9], [4, 5]]), array([[2, 3], [0, 1]]), [3, 4, 2], [1, 0]] 

运行2

 >>> train_test_split(a, b) [array([[8, 9], [4, 5], [0, 1]]), array([[6, 7], [2, 3]]), [4, 2, 0], [3, 1]] 

它改变。 另一方面,如果你使用random_state=some_number ,那么你可以保证运行1的输出将等于运行2的输出,也就是说你的分割总是相同的。 不pipe什么样的实际random_state数是random_state ,…重要的是,每次你使用42,你总是会得到相同的输出,你第一次分裂。 如果你想得到可重复的结果,例如在文档中,这是非常有用的,这样每个人在运行示例时都能够始终如一地看到相同的数字。 在实践中,我会说,你应该设置random_state到一些固定的数字,而你testing的东西,但如果你真的需要一个随机(而不是一个固定的)拆分,然后删除它。

关于你的第二个问题,一个伪随机数发生器是一个产生几乎真正的随机数的数字发生器。 为什么他们不是真正的随机超出了这个问题的范围,可能对你的情况无关紧要,你可以在这里看看更多的细节。