分裂数据中的Python随机状态

2024-04-26 10:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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)

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


Tags: testsize状态情况trainrandom交叉split
3条回答

随机状态是0还是1或任何其他整数都无关紧要。重要的是,如果您希望在多次代码运行期间验证您的处理,则应该设置相同的值。顺便说一下,我在scikit的许多官方示例中以及其他地方都看到了random_state=42的用法。

random_state顾名思义,用于初始化内部随机数生成器,该生成器将决定在您的情况下将数据拆分为列和测试索引。在documentation中,声明如下:

If random_state is None or np.random, then a randomly-initialized RandomState object is returned.

If random_state is an integer, then it is used to seed a new RandomState object.

If random_state is a RandomState object, then it is passed through.

这是为了在多次运行代码时检查和验证数据。设置random_state固定值将确保每次运行代码时生成相同的随机数序列。除非在这个过程中存在其他一些随机性,否则产生的结果将一如既往。这有助于验证输出。

random_state对随机选择的数据进行拆分,但有一个扭曲。扭曲是数据的顺序对于一个特定的随机状态值是相同的。你需要明白它不是一个布尔接受的值。从0开始到任何整数否,如果作为随机状态传递,则它将是一个永久顺序。例:您在random_state=0中得到的顺序保持不变。之后,如果您执行random_state=5并再次返回random_state=0,您将得到相同的顺序。就像0代表所有整数一样。 每次random_state=None如何随机分裂。

如果仍有疑问,请观看this

如果在代码中没有提到random_状态,那么每当执行代码时,都会生成一个新的随机值,并且每次列车和测试数据集都有不同的值。

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

相关问题 更多 >