gpt4 book ai didi

python - sklearn - 在多次运行中保存 train_test_split 分割/状态?

转载 作者:行者123 更新时间:2023-11-30 22:24:16 24 4
gpt4 key购买 nike

Python、pandas、jupyter、scikit-learn。

我需要:

  • 对数据集进行 n 个不同分割。
  • 做一些事情以便以后能够在另一个笔记本/脚本中重现其中任何一个。
  • 优雅的方式会很好。

现在我正在使用 sklearn train_test_split,但使用替代方案也可以。如果我理解正确的话 random_state 参数可以按以下方式使用:

n = 10**6
while n > 0:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state = n)

#whatever I'm going to to with this split
n-=1

然后我希望能够重现 split 。我可以转储模型以在另一台笔记本中重现它们吗?这有效吗?

UPD我根据经验找到了正确的答案。 (如果有具体的方法来回答您自己的问题,请告诉我)。

训练测试分割可以作为模型转储/加载。

joblib.dump(train_test_split, path)
my_train_test_split = joblib.load(path)

对于多个数据集。我在一个循环中在两个不同的数据集上使用它两次,传递唯一的随机状态。我能够使用加载的模型重现每个数据集的分割。这就是我所需要的。

最佳答案

这正是随机状态参数的用途。如果您对具有相同随机状态的同一数据集调用training_test_split,那么您每次都会获得相同的分割。为了向自己证明这一点,您可以编写一个简单的脚本来检查

import numpy as np
from sklearn.model_selection import train_test_split

X = np.arange(25)
rs = 42
train, test = train_test_split(X,
test_size=0.3,
random_state=rs)
for i in range(10):
new_train, new_test = train_test_split(X,
test_size=0.3,
random_state=rs)
print(np.all(train == new_train), np.all(test == new_test))

输出:

(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)

关于python - sklearn - 在多次运行中保存 train_test_split 分割/状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47872546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com