我当前正在通过Anaconda Navigator使用Jupyter Notebook版本5.6.0。我试图将数据集拆分为“训练和测试”,但是每当我关闭并重新打开笔记本并重新运行代码时,它都会创建一个不同的训练和测试集。但是,如果我只是在不关闭笔记本计算机的情况下重新运行代码,则random_state可以工作。这正常吗?有没有办法解决这个问题,即使我关闭并重新打开笔记本前夕,它仍然会以相同的方式拆分数据集>
我已经设置了train_test_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
答案 0 :(得分:1)
您从何处以及如何获取测试数据?如果您的数据来自动态来源(随机生成的数据,来自服务器的数据,或者如果您通过从数据中选择随机值来减少数据),那么可能会带来麻烦。
通常,我会通过创建数据副本来解决该问题,以便可以使用pickle.io
来引用它。这段代码假设我已经将数据作为数据框:
df.to_pickle(file_name)
接下来,我将仅使用我存储的数据,方法是:
df = pd.read_pickle(file_name)
然后 从sklearn.model_selection导入train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=101)
答案 1 :(得分:0)
尝试在numpy中设置随机状态:
import numpy as np
np.random.seed(42)