无法使用sklearn再现列车和测试的拆分

2024-04-25 05:09:33 发布

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

我目前正在通过Anaconda Navigator使用Jupyter笔记本5.6.0版。我试图将数据集拆分为训练和测试,但每当我关闭并重新打开笔记本并重新运行代码时,它就会创建一个不同的训练和测试集。不过,如果我只是在不关闭笔记本的情况下重新运行代码,随机的\u状态就可以工作。这正常吗?有没有办法解决这个问题,即使我关闭并重新打开笔记本,它仍然会以相同的方式拆分数据集>

我已经设置了train\u test\u split方法的随机状态,但是它仍然产生不同的数据分割。你知道吗

以下是我目前的代码:

#Split dataset into Training and Testing
from sklearn.model_selection import train_test_split

y = train['Target']

x_train, x_test, y_train, y_test = train_test_split(train, y, test_size=0.2, random_state = 0)
x_train.head()

第一次运行的结果如下:

      |   ID        |    Country           |   Target

7093  |   9.56      |      Tokyo           |    Yes

5053  |   9.58      |      Bangkok         |    Yes

1627  |   9.53      |      New York        |    No

2514  |   9.55      |      Los Angeles     |    No

重新运行值显示:

      |   ID        |    Country           |   Target

3805  |   9.51      |     Chicago          |    No

6730  |   9.59      |     Seattle          |    No

7623  |   9.57      |     Busan            |    Yes

7045  |   9.60      |     Seoul            |    Yes

Tags: 数据no代码testidnavigatortarget状态
2条回答

你从哪里得到你的测试数据?如果您的数据来自动态源(随机生成的数据、来自服务器的数据,或者如果您正在通过从中选取随机值来减少数据),则会出现问题。 我通常会通过创建数据的副本来解决这个问题,这样我就可以通过使用pickle.io来引用它。此代码假设我已经将数据作为数据帧:

df.to_pickle(file_name)

接下来,我将使用我存储的数据,使用:

df = pd.read_pickle(file_name)

那么 从sklearn.model\选择导入列车\u测试\u拆分

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=101)

尝试在numpy中设置随机状态:

import numpy as np
np.random.seed(42)

相关问题 更多 >