【问题标题】:sklearn SGDClassifier can't stopsklearn SGDClassifier 停不下来
【发布时间】:2017-07-03 22:06:21
【问题描述】:

我正在使用sklearn 来训练模型。火车dataset 大约是3000k,所以我使用SGDClassifier。该功能不是很好,所以我知道它可能不会收敛。但我希望SGDClassifier 根据我的设置提前停止,就像max_iter = 1000 一样。就我而言,函数SGDClassifier 没有像max_iter 这样的参数。我该怎么做? 这是代码。

这是打印信息。

任何帮助将不胜感激...

【问题讨论】:

  • SGDClassifier 的默认交互次数为 5,由 n_iter 参数控制。你的模型运行了多长时间?
  • 嗨,欢迎来到 SO!请post text, not screenshots。您可能还想阅读how to askminimal, complete, and verifyable example。祝你好运!
  • 已经运行了大约20个小时。
  • 我怎样才能停止它并获取当前模型?这样我就可以保存模型并稍后通过加载保存的模型继续训练它。
  • @chenzhixing 我在我的回答中发布了一个链接,该链接显示了如何在 sklearn 中保存/加载经过训练的模型。

标签: scikit-learn


【解决方案1】:

这很奇怪,在 scikit-learn 0.18.2 中,n_iter 默认设置为 5 个 epoch。您能否使用脚本更新您的问题,以便使用玩具数据集(例如使用 numpy.random.randn 或类似生成的)重现行为。

请注意,在 scikit-learn master 和 0.19 发布后,n_iter 将被弃用并替换为 max_itertol(例如设置为 1e-3)以在目标函数为 no 时自动停止更长时间的进步。

【讨论】:

    【解决方案2】:

    运行 20 小时可能并不奇怪,因为您有一个 3000k 的数据集,并且您使用的 SGDClassifier 很慢。你有什么处理器?

    如果您在 Windows 中,请尝试使用 CTRL+C 停止它。然后,使用n_iter 来控制您想要的迭代次数。然而,默认值为 5。

    最后,如果你想保存模型,请看这里:

    Save and Load Machine Learning Models in Python with scikit-learn

    【讨论】:

      猜你喜欢
      • 2013-06-08
      • 2017-04-02
      • 2014-08-28
      • 2019-03-08
      • 2013-09-25
      • 2020-05-02
      • 2017-06-16
      • 2023-04-04
      • 2019-03-12
      相关资源
      最近更新 更多