我有一个多类别分类任务。当我运行基于scikit示例的脚本如下:
classifier = OneVsRestClassifier(GradientBoostingClassifier(n_estimators=70, max_depth=3, learning_rate=.02))
y_pred = classifier.fit(X_train, y_train).predict(X_test)
cnf_matrix = confusion_matrix(y_test, y_pred)
我遇到了这个错误:
File "C:\ProgramData\Anaconda2\lib\site-packages\sklearn\metrics\classification.py", line 242, in confusion_matrix
raise ValueError("%s is not supported" % y_type)
ValueError: multilabel-indicator is not supported
我试过将labels=classifier.classes_
传递至confusion_matrix()
,但没有帮助。
y_test和y_pred如下:
y_test =
array([[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 1, 0, 0, 0, 0],
...,
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0]])
y_pred =
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
...,
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0]])
y_pred
和y_test
作为独热编码数组?你的原始类标签是什么?你应该提供你的代码,从如何转换y
开始。 - Vivek Kumary_train
和y_test
二值化为y_test = label_binarize(y_test, classes=[0, 1, 2, 3, 4, 5])
,以便用于OneVsRestClassifier()
。 - YNRy_pred
以获取它的原始类。 - Vivek Kumar