2017-04-24 113 views
1

我正在尝试Keras模型预测输出的简单分类报告。输入的格式是两个1D数组,但错误仍然被抛出。sklearn classification_report ValueError:未知的标签类型:

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并展平输入,但它仍然不起作用。

+0

你能包括的形状请问'test_labels'和'Y_pred'? – ncfirth

+0

是分类问题还是回归问题? –

+0

错误最后一行显示的数组显示您的'y'。在我看来,这是连续的。所以分类类型的方法或估计器将无法工作。因为这是回归问题 –

回答

2

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

+0

谢谢你,我现在recieving错误 '“ValueError异常:混合不允许Y的类型,有类型设置([”二进制”,‘连续’])“' 我下面这个教程[ (https://github.com/julienr/ipynb_playground/blob/master/keras/convmnist/keras_cnn_mnist.ipynb),他们似乎能够做我原本想做的事情。 – pcpetepete

相关问题