sklearn.model_selection.train_test_split 示例中"random-state"是什么?



有人可以解释一下random_state在下面的示例中的含义吗?

import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.arange(10).reshape((5, 2)), range(5)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=42) 

为什么硬编码为 42?

这不是很明显吗? 42是生命、宇宙和万物终极问题的答案。

严肃地说,random_state只是为随机生成器设置一个种子,因此您的训练-测试拆分始终是确定性的。如果你不设置种子,每次都不一样。

相关文档:

random_state intRandomState实例或None , 可选 (默认值 = None (
如果int,则random_state是随机使用的种子 数字生成器;如果是RandomState实例,则random_state是随机的 数字生成器;如果None,则随机数生成器为 RandomState np.random 使用的实例。

如果未在代码中指定random_state,则每次运行(执行(代码时都会生成一个新的随机值,并且训练数据集和测试数据集每次都会具有不同的值。

但是,如果分配了一个固定值,如 random_state = 0 或 1 或 42 或任何其他整数,那么无论您执行代码多少次,结果都将是相同的 .i.e,即训练和测试数据集中的相同值。

随机状态可确保生成的拆分是可重现的。Scikit-learn使用随机排列来生成分裂。您提供的随机状态将用作随机数生成器的种子。这可确保以相同的顺序生成随机数。

当代码

中未定义每次运行时的Random_state时,每次运行的数据都会发生变化,准确性可能会发生变化。当定义 Random_state = "常量整数"时,每次运行训练数据都将是常量,以便于调试。

随机状态只是在任何操作中随机生成的集合的批号。每当我们想要再次相同的集合时,我们都可以指定此批号。

相关内容

最新更新