Aci*_*lah 1 python pandas scikit-learn
Python、pandas、jupyter、scikit-learn。
我需要:
现在我正在使用 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
Run Code Online (Sandbox Code Playgroud)
然后我希望能够重现分裂。我可以转储模型以在另一台笔记本上重现它们吗?这有效吗?
UPD 我根据经验找到了正确的答案。(请指导我是否有特定的方法来回答您自己的问题)。
火车测试分割可以作为模型转储/加载。
joblib.dump(train_test_split, path)
my_train_test_split = joblib.load(path)
Run Code Online (Sandbox Code Playgroud)
对于多个数据集。我在一个循环中在两个不同的数据集上使用它两次,传递唯一的随机状态。我能够使用加载的模型重现每个数据集的分割。这就是我所需要的。
这正是随机状态参数的用途。如果您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))
Run Code Online (Sandbox Code Playgroud)
输出:
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
(True, True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4813 次 |
| 最近记录: |