ValueError:分类报告的未知标签类型

Posted

技术标签:

【中文标题】ValueError:分类报告的未知标签类型【英文标题】:ValueError: Unknown label type for classification_report 【发布时间】:2019-11-11 13:15:09 【问题描述】:

我正在尝试使用 sklean 包的分类报告模块评估多类分类模型。

y_pred 的维度:(1000,36) y_test的维度:(1000,36)

我尝试在 2 个数组上调用分类报告,即 y_test 和 y_pred

def display_results(y_test,y_pred,column_name=labels):
    print(classification_report(y_test,y_pred,target_names=labels))

使用此代码,我得到:

ValueError: Unknown label type: (array([[1, 0, 0, ..., 0, 0, 0],
       [1, 0, 0, ..., 0, 0, 0],
       [1, 0, 0, ..., 1, 1, 0],
       ...,
       [1, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [1, 0, 0, ..., 0, 0, 0]]), array([[1, 0, 0, ..., 0, 0, 0],
       [1, 0, 0, ..., 0, 0, 0],
       [1, 0, 0, ..., 0, 0, 0],
       ...,
       [1, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [1, 0, 0, ..., 0, 0, 0]]))

我希望根据传递给函数的标签获得所有列的 Precision、Recall、F1 和总平均指标。

【问题讨论】:

你使用的是什么版本的 sklearn? @MaximeKan sklearn 版本是'0.18.1' 能否请您添加变量labels的值 classification_report 不适用于单热编码标签 - 请参阅 this thread;但是您似乎处于 multi-label 设置中,因此在这里不起作用... 【参考方案1】:

对于您的错误,您需要np.hstack

在分类器具有多类多输出的情况下效果最佳

from sklearn.utils.multiclass import type_of_target
type_of_target(y_test)
type_of_target(y_pred)

>>'multiclass-multioutput'

所以,你的解决方案是

print(classification_report(np.hstack(y_test),np.hstack(y_pred)))

【讨论】:

以上是关于ValueError:分类报告的未知标签类型的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:未知标签类型:“未知”-标签是数字

ValueError:未知标签类型:同时使用聚类+分类模型时为“连续”

ValueError:未知标签类型:使用 cross_validation 时

ValueError:未知标签类型:RandomForestClassifier 中的“未知”

ValueError:未知标签类型

ValueError:未知标签类型:DecisionTreeClassifier() 中的“连续”