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

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

在 keras 中為多類分類生成混淆矩陣

在 keras 中為多類分類生成混淆矩陣

慕妹3146593 2021-09-25 21:33:11
通過訓練模型獲得高達 98% 的準確率,但混淆矩陣顯示出非常高的誤分類。我正在使用 keras 在預訓練的 VGG16 模型上使用遷移學習方法進行多類分類。問題是使用 CNN 將圖像分類為 5 種番茄病害。有 5 個疾病類別,6970 張訓練圖像和 70 張測試圖像。訓練模型顯示 98.65% 的準確率,而測試顯示 94% 的準確率。但問題是當我生成混淆矩陣時,它顯示出非常高的誤分類。有人請幫助我,是我的代碼錯誤還是模型錯誤?我很困惑我的模型是否給了我正確的結果。如果有人可以向我解釋 keras 如何使用 model.fit_generator 函數實際計算準確度,因為在混淆矩陣上應用準確度的一般公式并沒有給我與 keras 計算出的相同的結果。用于測試數據集的代碼是:test_generator = test_datagen.flow_from_directory(test_dir,target_size=(150, 150),batch_size=20,class_mode='categorical')test_loss, test_acc = model.evaluate_generator(test_generator, steps=50)print('test acc:', test_acc)我從論壇之一找到了生成混淆矩陣的代碼;代碼是:import numpy as npfrom sklearn.metrics import confusion_matrix,classification_reportbatch_size = 20num_of_test_samples = 70predictions = model.predict_generator(test_generator,  num_of_test_samples // batch_size+1)y_pred = np.argmax(predictions, axis=1)true_classes = test_generator.classesclass_labels = list(test_generator.class_indices.keys())   print(class_labels)print(confusion_matrix(test_generator.classes, y_pred))report = classification_report(true_classes, y_pred, target_names=class_labels)print(report)以下是我得到的結果:測試精度:Found 70 images belonging to 5 classes.test acc: 0.9420454461466182混淆矩陣的結果:['TEB', 'TH', 'TLB', 'TLM', 'TSL'][[2 3 2 4 3] [4 2 3 0 5] [3 3 3 2 3] [3 3 2 4 2] [2 2 4 4 2]]]              precision    recall  f1-score   support         TEB       0.14      0.14      0.14        14          TH       0.15      0.14      0.15        14         TLB       0.21      0.21      0.21        14         TLM       0.29      0.29      0.29        14         TSL       0.13      0.14      0.14        14   micro avg       0.19      0.19      0.19        70   macro avg       0.19      0.19      0.19        70weighted avg       0.19      0.19      0.19        70
查看完整描述

6 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

測試標簽應該是 class_indices 而不是 classes

true_classes = test_generator.class_indices


查看完整回答
反對 回復 2021-09-25
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

親愛的總是對任何分類性能參數做以下事情:

  1. 首先重置您在預測中使用的生成器

  2. 將 shuffle 等于 false 在 flow_from_directory()


查看完整回答
反對 回復 2021-09-25
  • 6 回答
  • 0 關注
  • 685 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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