多输出目标数据不支持标签二值化:OneVsRest分类器。

4

我正在尝试进行多类分类。 这是我的代码部分:

    nb_classif = OneVsRestClassifier(MultinomialNB()).fit(X_train_dtm, y_train)
    C = 1.0 #SVregularization parameter
    svc = OneVsRestClassifier(svm.SVC(kernel='linear', C=C)).fit(X_train_dtm,                         y_train)
    lin_svc = OneVsRestClassifier(svm.LinearSVC(C=C)).fit(X_train_dtm, y_train)
    sgd = OneVsRestClassifier(SGDClassifier()).fit(X_train_dtm,y_train)

我遇到了错误

使用标签二值化不支持多输出目标数据:OneVsRest分类器

我打印了我的X_train_dtm,输出如下:

(0, 184)      1
(0, 2674)     1
(0, 2399)     1
(0, 536)      1
(0, 2673)     1
(0, 1977)     1
(0, 2252)     1
(0, 2577)     1
(0, 1538)     1
(0, 1027)     1
(0, 2582)     1
(0, 750)      1
(0, 2663)     1
(0, 2544)     1
(0, 2159)     1
(0, 2150)     1
(0, 1309)     1
(0, 1737)     1
(0, 543)      1
(0, 340)      1
(0, 2229)     1
(0, 1321)     1
(0, 38)       1
(0, 2475)     1
(0, 1738)     1
:     :
(349, 1097)   1
(349, 2949)   2
(349, 1191)   1
(349, 1202)   1
(349, 1628)   1
(349, 2873)   2
(349, 264)    1
(349, 692)    1
(349, 1491)   1
(349, 2107)   1
(349, 1185)   1
(349, 1072)   1
(349, 433)    3
(349, 151)    1
(349, 2870)   2
(349, 194)    1
(349, 247)    1
(349, 2740)   1
(349, 2324)   1
(349, 379)    2
(349, 1027)   3
(349, 2582)   1
(349, 2475)   2
(349, 1939)   2
(349, 1136)   2
1个回答

4
问题出在你的 y_train 上。请确认它的形状是 shape=(?, 1) 或者 shape=(?)

y_train的形状为(350,12)。 - venkatesh .b
2
请阅读以下内容:http://scikit-learn.org/stable/modules/multiclass.html。它应该能够帮助您更好地理解术语,然后根据您实际想要实现的内容阅读OneVSRestClassifier的文档。 - Jan K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接