gpt4 book ai didi

python - Scikit学习中的随机状态(伪随机数)

转载 作者:IT老高 更新时间:2023-10-28 21:06:18 26 4
gpt4 key购买 nike

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

我也无法理解什么是伪随机数。

最佳答案

train_test_split 将数组或矩阵拆分为随机训练和测试子集。这意味着每次你在不指定 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,那么你可以保证 Run 1 的输出将等于 Run 2 的输出>,即您的拆分将始终相同。实际的 random_state 数字是 42, 0, 21, ... 并不重要,重要的是每次使用 42 时,第一次创建 split 。如果您想要可重现的结果(例如在文档中),这很有用,这样每个人在运行示例时都可以一致地看到相同的数字。在实践中,我会说,您应该在测试时将 random_state 设置为某个固定数字,但如果您确实需要随机(而不是固定)拆分,然后在生产中将其删除。

关于您的第二个问题,伪随机数生成器是一种生成几乎真正随机数的数字生成器。为什么它们不是真正随机的超出了这个问题的范围,在你的情况下可能并不重要,你可以看看 here形成更多细节。

关于python - Scikit学习中的随机状态(伪随机数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28064634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com