【发布时间】: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