如何在 GridSearchCV 中保存最佳估计器?

How to save the best estimator in GridSearchCV?

当面对一个大数据集时,我需要花一天的时间使用GridSearchCV()来训练一个参数最好的SVM。如何保存最好的估计器,以便下次启动我的电脑时可以直接使用这个经过训练的估计器?

默认情况下,GridSearchCV 不会公开或存储最佳模型实例,它只会 returns 导致得分最高的参数集。如果您想要最好的预测器,则必须指定 refit=True,或者如果您使用多个指标 refit=name-of-your-decider-metric。这将 运行 使用 完整数据集 和找到的最佳参数的最后训练步骤。为了找到最佳参数,GridSearchCv 显然不会使用整个数据集进行训练,因为他们必须拆分出 hold-out 个验证集。

现在,当您这样做时,您可以通过 best_estimator_ 属性获取模型。有了这个,您可以使用 joblib 选择该模型并在第二天重新加载它以进行预测。在伪代码和真实代码的混合中,读起来像

from joblib import dump, load
svc = svm.SVC() # Probably not what you are using, but just as an example
gcv = GridSearchCv(svc, parameters, refit=True) 
gvc.fit(X, y)
estimator = gcv.best_estimator_
dump(estimator, "your-model.joblib")
# Somewhere else
estimator = load("your-model.joblib")