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,则可以保证运行1的输出与运行2的输出相等,即,拆分将始终相同。实际的random_state数字是42,0,21,…无关紧要。重要的是,每次使用42时,第一次拆分时总会得到相同的输出。如果您想要可重复的结果(例如在文档中),这将很有用,这样每个人在运行示例时都可以始终看到相同的数字。实际上,我会说,random_state在测试材料时,应将设置为某个固定数字,但是如果确实需要随机(而不是固定)分割,则在生产中将其删除。
关于第二个问题,伪随机数生成器是一个生成几乎真正随机数的数字生成器。为什么它们不是真正随机的,超出了此问题的范围,可能对您而言无关紧要
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)