拆分数据集中的Python随机状态

问题描述 投票:14回答:4

我是python的新手。任何人都可以告诉我为什么我们在分裂列车和测试集中将随机状态设置为零。

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

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

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

交叉验证中这种随机状态的后果是什么?

python random machine-learning scikit-learn
4个回答
27
投票

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设置为固定值将保证每次运行代码时都生成相同的随机数序列。除非过程中存在其他一些随机性,否则产生的结果将一如既往。这有助于验证输出。


4
投票

random_state分割随机选择的数据,但有一个扭曲。扭曲是对于random_state的特定值,数据的顺序是相同的。你需要了解它不是bool的值。从0开始到任何整数no,如果你传递为random_state,它将是一个永久的顺序。例如:你在random_state=0获得的顺序保持不变。之后,如果你执行random_state=5并再次回到random_state=0,你将获得相同的订单。并且像所有整数的0将相同。然而random_state=None每次随机分裂。

如果仍然怀疑看this


1
投票

如果您没有在代码中提及random_state,那么无论何时执行代码,都会生成一个新的随机值,并且train和test数据集每次都会有不同的值。

但是,如果每次结果都相同时使用random_state(random_state = 1或任何其他值)的特定值,即列车和测试数据集中的值相同。


0
投票

我们使用random_state参数来重现每个纪元后训练数据集的初始混洗。

© www.soinside.com 2019 - 2024. All rights reserved.