我能否以某种方式键入中断GridSearchCV并且仍然拥有收集到的最佳参数?

时间:2018-03-04 01:51:12

标签: python scikit-learn data-science grid-search

所以我有以下代码 -

params = {'n_estimators': [1000, 2000], 'max_depth': [10, 20], 'min_samples_split': [2, 3],
          'learning_rate': [0.1, 0.05, 0.01], 'loss': ('ls', 'huber', 'lad', 'quantile'), 'verbose': [1]}
gbr = ensemble.GradientBoostingRegressor()
clf = GridSearchCV(gbr, params)

而且,虽然我不认为我已经考虑了很多,但它仍然需要永远确定最佳参数。看了几个小时后,我看到了很棒的情况(verbose:[1])并希望阻止它继续下去。我不想在早上回到这里,并希望它已经完成。我想现在完成它而不会失去在这个过程中调整的时间。

有没有一种安全的方法可以停止调整并仍能获得最佳效果?

2 个答案:

答案 0 :(得分:1)

如果这个问题可以解决,then the answer appears to be no. 我知道几个星期前我这样做的时候,我也很不耐烦了。我只是通过日志按c + +浏览我希望它可以实现的数字。从95,94,93开始......等。

答案 1 :(得分:1)

我使用以下方法为DNN获取最佳超参数(您可以自己使用):

  • for参数#1的循环
  • 参数#2的内部循环
  • ...
  • 在你的内部适合您的模型并保存/打印结果,图片等。

当然,如果你按照你的图片运行代码,就不会删除日志。

但正如我在这里看到的,你内部没有太多可能的参数组合。那么为什么它会永远运行:

  1. 数据非常大(采取子样本)
  2. cv-s的数量非常大(少于10个)
  3. 减少估算人数。 1000-2000太多了
  4. 采取小型max_features
  5. 减少max_depth。我相信10-20太多了。对于大多数情况,它应该是<10(例如尝试3-5)
  6. 使用XGBoost(它的速度要快得多)。一般来说,XGBoost和GBR是相同的(并且两者都不会过度适应越来越多的估算器)但是XGBoost有一些附加功能可以帮助实现这一目标。
  7. 在某些服务器上运行或升级您的PC:)