亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我無法理解使用 argmax() 刪除 OHE 后得到的混淆矩陣

我無法理解使用 argmax() 刪除 OHE 后得到的混淆矩陣

智慧大石 2023-07-11 14:52:26
我無法解釋我的混淆矩陣。我遇到了低于價值的錯誤。ValueError:不支持多標簽指示器閱讀大量帖子后,我意識到該問題可能是由于預測中的OHE(一種熱門編碼)造成的。因此,為了解決這個問題,我按照各種帖子中的建議使用了 argmax() 。下面是我的代碼:from sklearn.metrics import confusion_matrixprint(Y.shape)print(predictions.shape)print(Y)print(predictions)# print(confusion_matrix(Y, predictions))print(confusion_matrix(Y.argmax(axis = 1), predictions.argmax(axis = 1)))(1, 200)(1, 200)[[1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0  0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 1  0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1  0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0  0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1  0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0]][[1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0  0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1  0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1  0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0  0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 0  0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1]][[1]]從輸出中可以看出,我得到的[[1]]是混淆矩陣。我不知道如何解釋它。我期待一個 2x2 混淆矩陣,然后我會繼續計算精度、召回率、F1 分數等,以了解我的模型的性能。請建議我做錯了什么?
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

IIUC 的問題在于輸入數組的形狀。你需要先把它們壓平。這是重現您的案例的示例:


from sklearn.metrics import confusion_matrix


Y = np.random.choice([0,1],size=(1,10))

pred = np.random.choice([0,1],size=(1,10))

由于兩個數組都是二維的,如您的示例所示,confusion_matrix因此解釋您具有多標簽輸出,但它不支持:


confusion_matrix(Y, pred)

ValueError: multilabel-indicator is not supported

您需要展平兩個數組:


confusion_matrix(Y.ravel(), pred.ravel())


查看完整回答
反對 回復 2023-07-11
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

考慮到其他信息,輸出是正確的。由于 Y 形狀為 (1,200),這表明您有 1 個樣本,其中有 200 個類。當你對此執行 argmax() 時,你將得到大小為 (1,1) 的輸出?;煜仃嚨拇笮?(n_classes, n_classes)。由于只有一個樣本,因此混淆矩陣的大小將為 (1,1)。


為了解決這個問題,要么您需要傳遞多個樣本,要么確保 argmax 正在執行預期的操作(即您確定輸出是 OHE)?如果您的輸出不是 OHE,那么您只需在獲得混淆矩陣之前重新調整預測即可。


from sklearn.metrics import confusion_matrix


Y = np.squeeze(Y) #should result in shape (200,)

predictions = np.squeeze(predictions) #should result in shape (200,)


cf = confusion_matrix(Y, predictions) #should result in shape (2, 2) if 2 classes 


查看完整回答
反對 回復 2023-07-11
  • 2 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號