【问题标题】:sklearn classification_report ValueError: Unknown label type:sklearn 分类报告 ValueError:未知标签类型:
【发布时间】:2017-09-21 04:15:24
【问题描述】:

我正在尝试对 Keras 模型预测的输出进行简单的分类报告。输入的格式是两个一维数组,但是还是会报错。

    Y_pred = np.squeeze(model.predict(test_data[0:5]))
    classification_report(test_labels[0:5], Y_pred)


    ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-235-49afd2f46d17> in <module>()
----> 1 classification_report(test_labels[0:5], Y_pred)

/Library/Python/2.7/site-packages/sklearn/metrics/classification.pyc in classification_report(y_true, y_pred, labels, target_names, sample_weight, digits)
   1356 
   1357     if labels is None:
-> 1358         labels = unique_labels(y_true, y_pred)
   1359     else:
   1360         labels = np.asarray(labels)

/Library/Python/2.7/site-packages/sklearn/utils/multiclass.pyc in unique_labels(*ys)
     97     _unique_labels = _FN_UNIQUE_LABELS.get(label_type, None)
     98     if not _unique_labels:
---> 99         raise ValueError("Unknown label type: %s" % repr(ys))
    100 
    101     ys_labels = set(chain.from_iterable(_unique_labels(y) for y in ys))

ValueError: Unknown label type: (array([-0.38947693,  0.18258421, -0.00295772, -0.06293461, -0.29382696]), array([-0.46586546,  0.1359883 , -0.00223112, -0.08303966, -0.29208803]))

两个输入都属于同一类型,所以我很困惑为什么这不起作用?我已经尝试将类型显式更改为 dtype=float 并展平输入,但它仍然不起作用。

【问题讨论】:

  • 你能把test_labels和Y_pred的形状都包括进来吗?
  • 是分类问题还是回归问题?
  • 错误最后一行显示的数组显示了您的y。在我看来,这是连续的。因此分类类型的方法或估计器将无法使用它。因为这是回归问题
  • 如果您使用的是 MNIST 教程,这是一个分类问题。但是您在错误中看到的 y 值与此不对应。您应该检查 y 值,它们实际上是您想要的(输出类的标签)。并且最好将整个代码放在这里,以便于调试。
  • 这是一个回归问题,你是对的,我正在尝试使用 classifcaiton_report 进行回归,但这是行不通的。

标签: numpy scikit-learn keras


【解决方案1】:

classification_report 仅适用于分类问题。

如果您有分类问题(例如,二元),请使用以下

Y_pred = np.squeeze(model.predict(test_data[0:5]))
threshold = 0.5
classification_report(test_labels[0:5], Y_pred > threshold)

threshold 将使一切都大于 0.5(在上面的示例中),1.0

【讨论】:

  • 谢谢,我现在收到错误'ValueError: Mix type of y not allowed, got types set(['binary', 'continuous'])" 我正在按照page 中的教程进行操作,他们似乎能够做我最初想做的事情。
猜你喜欢
  • 2019-11-11
  • 2020-05-14
  • 2021-05-11
  • 2018-01-01
  • 2020-05-11
  • 2018-07-22
  • 2019-06-04
  • 2018-01-02
  • 2018-12-16
相关资源
最近更新 更多