Python SGDClassizer类的数量必须大于一个;得了1级

Python SGDClassizer类的数量必须大于一个;得了1级,python,Python,因此,我已经尽了一切可能来解决这个错误,我也非常沮丧 from sklearn.linear_model import SGDClassifier train_labels_9 = [(label == 9) for label in train_labels_9] test_labels_9 = [(label == 9) for label in test_labels_9] sgd = SGDClassifier(max_iter = 1000, tol = 1e-3) sgd.fit

因此,我已经尽了一切可能来解决这个错误,我也非常沮丧

from sklearn.linear_model import SGDClassifier

train_labels_9 = [(label == 9) for label in train_labels_9]
test_labels_9 = [(label == 9) for label in test_labels_9]

sgd = SGDClassifier(max_iter = 1000, tol = 1e-3)
sgd.fit(train_images,train_labels_9)

below is the error
ValueError                                Traceback (most recent call last)
<ipython-input-57-8ad0fdf39a29> in <module>
      6 
      7 sgd = SGDClassifier(max_iter = 1000, tol = 1e-3)
----> 8 sgd.fit(train_images,train_labels_9)

~\Anaconda3\lib\site-packages\sklearn\linear_model\stochastic_gradient.py in fit(self, X, y, coef_init, intercept_init, sample_weight)
    741                          loss=self.loss, learning_rate=self.learning_rate,
    742                          coef_init=coef_init, intercept_init=intercept_init,
--> 743                          sample_weight=sample_weight)
    744 
    745 

~\Anaconda3\lib\site-packages\sklearn\linear_model\stochastic_gradient.py in _fit(self, X, y, alpha, C, loss, learning_rate, coef_init, intercept_init, sample_weight)
    594 
    595         self._partial_fit(X, y, alpha, C, loss, learning_rate, self._max_iter,
--> 596                           classes, sample_weight, coef_init, intercept_init)
    597 
    598         if (self._tol is not None and self._tol > -np.inf

~\Anaconda3\lib\site-packages\sklearn\linear_model\stochastic_gradient.py in _partial_fit(self, X, y, alpha, C, loss, learning_rate, max_iter, classes, sample_weight, coef_init, intercept_init)
    557             raise ValueError(
    558                 "The number of classes has to be greater than one;"
--> 559                 " got %d class" % n_classes)
    560 
    561         return self

ValueError: The number of classes has to be greater than one; got 1 class
来自sklearn.linear\u模型导入SGDClassizer
列车\u标签\u 9=[(标签==9)用于列车\u标签\u 9中的标签]
test_labels_9=[(label==9)用于test_labels_9中的标签]
sgd=sgd分级器(最大iter=1000,tol=1e-3)
sgd.fit(列车图像、列车标签)
下面是错误
ValueError回溯(最近一次调用上次)
在里面
6.
7 sgd=sgd分级器(最大iter=1000,tol=1e-3)
---->8 sgd.fit(列车图像、列车标签)
~\Anaconda3\lib\site packages\sklearn\linear\u model\random\u gradient.py拟合(self,X,y,coef\u init,intercept\u init,sample\u weight)
741损失=自我损失,学习率=自我学习率,
742 coef_init=coef_init,intercept_init=intercept_init,
-->743样品重量=样品重量)
744
745
~\Anaconda3\lib\site packages\sklearn\linear\u model\random\u gradient.py in\u fit(自身、X、y、alpha、C、损耗、学习率、初始系数、初始截距、样本重量)
594
595自我部分拟合(X,y,α,C,损失,学习率,自我最大值,
-->596类,样本重量,系数初始值,截距初始值)
597
598如果(self.\u tol不是None和self.\u tol>-np.inf
~\Anaconda3\lib\site packages\sklearn\linear\u model\random\u gradient.py in\u partial\u fit(self,X,y,alpha,C,loss,learning\u rate,max\u iter,classes,sample\u weight,coef\u init,intercept\u init)
557上升值错误(
558“班级数量必须大于一个
-->559“已获取%d个类“%n\u个类)
560
561回归自我
ValueError:类的数量必须大于1;得到1个类

我同意亨利的观点。
我昨天确实遇到了类似的问题,您可以检查
train\u labels.shape
,或者
np.unique(train\u labels)

如果您打印出一些列车数据,比如说
train[5:10]
,您就会发现问题所在

它们不是
int


将代码更改为
(label='9')
您的标签似乎是文本值,因此当您执行下面的语句时,它返回一个仅包含
False
的数组

train_labels_9 = [(label == 9) for label in train_labels_9]
可以使用将标签转换为整数

label = label.astype(np.uint8)

[(label==9)对于train\u labels\u 9中的label]
那些
train\u labels\u 9
包含9以外的任何内容?请同时发布一些标签示例。@chris,labels=mnist['target']labels\u 9=(labels==9'),从sklearn.model_selection导入train_test_split train_image,test_image,train_labels_9,test_labels_9=\train_test_split(image,labels_9,test_size=0.15),这不是一个示例。这只是另一个我们不知道其内部内容的代码:(我明白了,所以你想让我解释一下代码的作用吗?只需要澄清一下。我(通常也是如此)想让你发布
train\u label\u 9
是什么。你可以
打印(train\u label\u 9)
然后复制粘贴,或者如果它太长,稍微切片就更好了。作为将来的参考,阅读将帮助您更轻松、更快地获得答案。