【问题标题】:SGDClassifier with class_weight=auto fails on scikit-learn 0.15 but not 0.14具有 class_weight=auto 的 SGDClassifier 在 scikit-learn 0.15 但不是 0.14 上失败
【发布时间】:2014-09-08 15:16:35
【问题描述】:

当我使用以下选项训练 scikit-learn v0.15 SGDClassifier 时:SGDClassifier(loss='log', class_weight=None, penalty='l2'),训练完成且没有错误。 然而,当我在 scikit-learn v0.15 上使用 class_weight='auto' 训练这个分类器时,我得到了这个错误:

  return self.model.fit(X, y)
  File "/home/rose/.local/lib/python2.7/site-packages/scikit_learn-0.15.0b1-py2.7-linux-x86_64.egg/sklearn/linear_model/stochastic_gradient.py", line 485, in fit
    sample_weight=sample_weight)
  File "/home/rose/.local/lib/python2.7/site-packages/scikit_learn-0.15.0b1-py2.7-linux-x86_64.egg/sklearn/linear_model/stochastic_gradient.py", line 389, in _fit
    classes, sample_weight, coef_init, intercept_init)
  File "/home/rose/.local/lib/python2.7/site-packages/scikit_learn-0.15.0b1-py2.7-linux-x86_64.egg/sklearn/linear_model/stochastic_gradient.py", line 336, in _partial_fit
    y_ind)
  File "/home/rose/.local/lib/python2.7/site-packages/scikit_learn-0.15.0b1-py2.7-linux-x86_64.egg/sklearn/utils/class_weight.py", line 43, in compute_class_weight
    raise ValueError("classes should have valid labels that are in y")
ValueError: classes should have valid labels that are in y

是什么原因造成的?

作为参考,这里是class_weight上的文档:

为 class_weight 拟合参数预设。与相关的权重 类。如果没有给出,所有的类都应该有一个权重。 “自动”模式使用 y 的值来自动调整权重 与类频率成反比。

【问题讨论】:

  • 您是否在 OSX 上使用相同的 scikit-learn 版本? 0.15 版本刚刚发布,也许你可以尝试一下。如果错误仍然存​​在,即相同的代码在 linux ec2 而不是在 macosx 上引发错误,那么您应该考虑将其报告给 scikit-learn 邮件列表。
  • 我使用的是 0.15 版。
  • 查看您的回溯,您使用的是 beta1,而不是 0.15 版

标签: scikit-learn


【解决方案1】:

我认为这可能是 scikit-learn 中的一个错误。作为一种变通方法,请尝试以下操作:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y_encoded = le.fit_transform(y)
self.model.fit(X, y_encoded)
pred = le.inverse_transform(self.model.predict(X))

【讨论】:

    【解决方案2】:

    我正在修复此 PR:

    https://github.com/scikit-learn/scikit-learn/pull/3515

    如果它为您解决了问题,请随时测试并报告。

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 1970-01-01
      • 2014-06-05
      • 2016-08-11
      • 2015-12-19
      • 2017-03-13
      • 2015-05-22
      • 2015-09-07
      • 2014-10-23
      相关资源
      最近更新 更多