2017-04-24 163 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

相關問題