【CNN】模型評估標準

1.分類模型評價指標

在模型評估中,有多個標準用于衡量模型的性能,這些標準包括準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1 分數(F1-Score)等。

P positive;N? Negative

真正例(TP) :模型正確預測為正類的樣本數量。

它真實標簽是什么,預測值就是什么這就是TP

真負例(TN) :模型正確預測為負類的樣本數量。

真實標簽和預測標簽不一樣

假正例(FP) :模型錯誤預測為正類的樣本數量。

比如預測標簽是0,真實標簽不是0,那么就是一個FP0

假負例(FN) :模型錯誤預測為負類的樣本數量。

FN = 該類別真實樣本數 - 正確預測數(TP)

比如真實標簽0有3個? 預測里面正確預測到了倆個 那么FN = 1

1. 理解數據

  • 真實標簽y_true = [2, 0, 2, 2, 0, 1]

  • 預測標簽y_pred = [0, 0, 2, 2, 0, 2]

2. 構建混淆矩陣

首先計算混淆矩陣(按類別0、1、2排列):

真實\預測012
0200
1001
2102
  • 類別0:真實為0的樣本(索引1和4)

    • 預測結果:兩個都被正確預測為0 →?TP=2

    • 其他類別預測為0的樣本:真實為2的樣本(索引0)被預測為0 →?FP=1

    • Precision? = TP / (TP + FP) = 2 / (2 + 1) =?2/3

  • 類別1:真實為1的樣本(索引5)

    • 預測結果:真實為1被預測為2 →?TP=0

    • 其他類別預測為1的樣本:無 →?FP=0

    • Precision? = 0 / (0 + 0) =?0(sklearn將分母為0時定義為0)

  • 類別2:真實為2的樣本(索引0、2、3)

    • 預測結果:索引2和3正確預測為2 →?TP=2

    • 其他類別預測為2的樣本:真實為1(索引5)被預測為2 →?FP=1

    • Precision? = 2 / (2 + 1) =?2/3

計算每個類別的FN

FN是行方向的誤差(真實類別被漏判的數量)。對每個類別:

text

FN = 該類別真實樣本數 - 正確預測數(TP)
1.?類別 0
  • 真實樣本數:2個(索引1和4)

  • 正確預測數(TP):2個(都被預測為0)

  • FN? = 2 - 2 = 0

2.?類別 1
  • 真實樣本數:1個(索引5)

  • 正確預測數(TP):0個(未被預測為1)

  • FN? = 1 - 0 = 1
    (真實為1的樣本被錯誤預測為2)

3.?類別 2
  • 真實樣本數:3個(索引0、2、3)

  • 正確預測數(TP):2個(索引2和3被正確預測為2)

  • FN? = 3 - 2 = 1
    (真實為2的樣本被錯誤預測為0)

2.準確率

準確率(Accuracy)準確率是最直觀的評估指標,它表示模型預測正確的樣本占總樣本的比例。計算公式為:

from sklearn.metrics import confusion_matrix,accuracy_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假設我們有以下真實標簽和預測結果
y_true = np.array([2, 0, 2, 2, 0, 1])
y_pred = np.array([0, 0, 2, 2, 0, 2])# 計算準確率
accuracy = accuracy_score(y_true, y_pred)
print("準確率:", accuracy)

?

?

3.精確率(Precision)

精確率衡量模型預測為正類的實例中,實際為正類的比例。計算公式為:

?

對應多分類問題,采樣宏平均精確率是每個類別的精確率的平均值,不考慮每個類別的樣本數量。計算公式如下:

?

?

from sklearn.metrics import confusion_matrix,accuracy_score,precision_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假設我們有以下真實標簽和預測結果
y_true = np.array([2, 0, 2, 2, 0, 1])
y_pred = np.array([0, 0, 2, 2, 0, 2])# 計算精確率
precision = precision_score(y_true, y_pred, average='macro')
print("精確率:", precision)

4.召回率(Recall)

召回率衡量所有實際為正類的樣本中,模型預測為正類的比例。計算公式為:

召回率關注的是模型捕捉正類樣本的能力。在某些領域,如醫療診斷,召回率尤其重要,因為漏診(假負例)的后果可能非常嚴重。

?

from sklearn.metrics import confusion_matrix,accuracy_score,precision_score,recall_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假設我們有以下真實標簽和預測結果
y_true = np.array([2, 0, 2, 2, 0, 1])
y_pred = np.array([0, 0, 2, 2, 0, 2])# 計算召回率
recall = recall_score(y_true, y_pred, average='macro')
print("召回率:", recall)

?

5.F1 分數(F1-Score)

F1分數是精確率和召回率的調和平均值,它平衡了這兩個指標。計算公式為:

F1分數在精確率和召回率都較高的算法上表現出色。它是一個綜合指標,特別適用于那些對精確率和召回率都同樣重視的場景。

from sklearn.metrics import confusion_matrix,accuracy_score,precision_score,recall_score,f1_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假設我們有以下真實標簽和預測結果
y_true = np.array([2, 0, 2, 2, 0, 1])
y_pred = np.array([0, 0, 2, 2, 0, 2])# 計算準確率
accuracy = accuracy_score(y_true, y_pred)
print("準確率:", accuracy)# 計算精確率
precision = precision_score(y_true, y_pred, average='macro')
print("精確率:", precision)# 計算召回率
recall = recall_score(y_true, y_pred, average='macro')
print("召回率:", recall)# 計算F1分數
f1 = f1_score(y_true, y_pred, average='macro')
print("F1分數:", f1)

6.混淆矩陣

混淆矩陣是評估分類問題的基礎工具,它是一個表格,顯示了分類算法的預測結果與真實標簽之間的關系。對于二分類問題,混淆矩陣包含真正例(TP)、真負例(TN)、假正例(FP)和假負例(FN)。這些值是計算其他評估指標的基礎。混淆矩陣不僅提供了一個直觀的視覺表示,還允許我們深入了解模型在各個類別上的表現,特別是當處理不平衡數據集時,混淆矩陣可以揭示模型是否傾向于錯誤地將一個類別分類為另一個類別。

from sklearn.metrics import confusion_matrix,accuracy_score,precision_score,recall_score,f1_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as snsy_true = np.array([2, 0, 2, 2, 0, 1])
y_pred = np.array([0, 0, 2, 2, 0, 2])cm = confusion_matrix(y_true, y_pred)
plt.figure(figsize=(10,7))
sns.heatmap(cm, annot=True,fmt = "d",cmap = "Blues")
plt.xlabel('Predicted')
plt.ylabel('Truth')
plt.show()

?

7.ROC曲線和AUC值

ROC曲線是一個性能度量,顯示了在不同閾值設置下模型的真正例率(召回率)和假正例率的關系。AUC值表示ROC曲線下的面積,用于衡量模型的整體性能,AUC值越高,模型性能越好。ROC曲線和AUC值是評估模型區分不同類別能力的重要工具,尤其在二分類問題中非常實用

from sklearn.metrics import roc_curve,roc_auc_score
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import numpy as np
import matplotlib.pyplot as pltX = np.array([[0,0],[1,1],[2,0],[2,2],[0,1]])
y = np.array([1,1,0,1,0])plt.scatter(X[y==0,0],X[y==0,1],color = "red",label = "Class 0")
plt.scatter(X[y==1,0],X[y==1,1],color = "blue",label = "Class 1")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.legend()
plt.title("Data Points by Class")
plt.grid(True)
plt.show()x_train,x_test,y_train,y_test = train_test_split(X,y,test_size = 0.4,random_state = 42)
print("------訓練樣本------")
print(x_train,y_train)
print("------測試樣本------")
print(x_test,y_test)clf = RandomForestClassifier(n_estimators = 100,max_depth = 2,random_state = 42)
clf.fit(x_train,y_train)y_scores = clf.predict_proba(x_test)[:,1]
fpr,tpr,thresholds = roc_curve(y_test,y_scores)
auc = roc_auc_score(y_test,y_scores)plt.figure()
plt.plot(fpr,tpr,color = "darkorange",lw = 2,label = "ROC curve (area = %0.2f)" % auc)
plt.plot([0,1],[0,1],color = "navy",lw = 2,linestyle = "--")
plt.xlim([0.0,1.0])
plt.ylim([0.0,1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916375.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916375.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python爬蟲實戰:詩詞名句網《三國演義》全集

Beautiful Soup實戰案例:爬取"詩詞名句網" 目標 爬取"詩詞名句網"上的古典文學作品內容,包括書籍目錄和章節內容,并將每章內容獨立保存為文本文件。 目標網址: 《三國演義》全集在線閱讀_史書典籍_詩詞名句網 要求 書…

AWS CAF:企業云轉型的戰略指南

在數字化轉型的大潮中,企業正面臨前所未有的變革壓力。如何利用云計算驅動業務創新、提升IT敏捷性、優化成本結構,已成為眾多企業迫切需要解決的關鍵課題。然而,云遷移并不是簡單地將本地應用“復制”到云上,它是一項牽涉企業組織…

【Redis】Linux 配置Redis

一、Redis介紹 Redis(Remote Dictionary Server)是一款開源的、高性能的鍵值對(Key-Value)存儲數據庫,由 Salvatore Sanfilippo 于 2009 年開發,采用 ANSI C 語言編寫。它以內存存儲為核心,支持…

MongoDB數據庫高并發商業實踐優化·運行優化之不可使用root賬戶進行MongoDB運行-優雅草卓伊凡

MongoDB數據庫高并發商業實踐優化運行優化之不可使用root賬戶進行MongoDB運行-優雅草卓伊凡 引言 關于最近優雅草卓伊凡發布關于MongoDB的內容是由于我們的甲方上線了一個很老的產品,但是他的用戶量極大,并且還有各種人搞事情,不斷的來GJ&a…

戴爾電腦 Linux 安裝與配置指南_導入mysql共享文件夾

本指南將詳細介紹在戴爾電腦上安裝 Linux 操作系統的步驟,以及后續的重要配置,包括系統選擇、安裝流程、MySQL 數據恢復、網絡配置、文件共享和遠程維護等。步驟清晰且配有命令行示例和配置文件示例,適合初中級用戶參考。1、Linux 系統選擇與…

昇思學習營-DeepSeek-R1-Distill-Qwen-1.5B 模型LoRA微調學習心得

LoRA微調:加入參數式微調凍結原始網絡參數,對Attention層中QKV等添加旁支,包含兩個低維度的矩陣A和矩陣B,微調過程中僅更新A、B 矩陣效果:訓練參數被大幅降低,資源消耗較低。對attention的參數加入如下圖所…

彩色轉灰度的核心邏輯:三種經典方法及原理對比

灰度實驗將彩色圖像轉換為灰度圖像的過程稱為灰度化,這種做法在圖像處理和計算機視覺領域非常常見。灰度圖與彩色圖最大的不同就是:彩色圖是由R、G、B三個通道組成,而灰度圖只有一個通道,也稱為單通道圖像,所以彩色圖轉…

Spring Boot 項目啟動自動執行邏輯的最佳實踐:掌握 CommandLineRunner

前言 Spring Boot 啟動階段,總有些操作迫不及待沖在前線:配置要加載,數據要準備,日志要搶首發,仿佛個個爭當“啟動 MVP”。如果你也想讓項目一啟動就自動開工,少寫點手動觸發的“苦力邏輯”,那 CommandLineRunner 就是你的得力助手。它像那個永遠第一個打卡的同事,不喝…

高可用集群KEEPALIVED的詳細部署

一.高可用集群 1.1 集群類型 LB:Load Balance 負載均衡 LVS/HAProxy/nginx(http/upstream, stream/upstream) HA:High Availability 高可用集群 數據庫、Redis SPoF: Single Point of Failure,解決單點故障 HPC&#x…

[論文閱讀] 人工智能 + 軟件工程 | NoCode-bench:評估LLM無代碼功能添加能力的新基準

NoCode-bench:評估LLM無代碼功能添加能力的新基準 論文:NoCode-bench: A Benchmark for Evaluating Natural Language-Driven Feature Addition 研究背景:當AI嘗試給軟件"加新功能",我們需要一張靠譜的"考卷"…

【Git知識】Git 常用知識集合之基礎--分支系統與 Tag 標簽機制

🧰 Git 常用知識集合Git 是程序員的“時間機器”。這份手冊幫你從入門到精通,把 Git 玩明白。1?? Git 基礎操作流程 📌 三步走流程:添加 → 提交 → 推送 git add . # 把所有修改加入暫存區 git commit -m …

深入解析 Spark:關鍵問題與答案匯總

在大數據處理領域,Spark 憑借其高效的計算能力和豐富的功能,成為了眾多開發者和企業的首選框架。然而,在使用 Spark 的過程中,我們會遇到各種各樣的問題,從性能優化到算子使用等。本文將圍繞 Spark 的一些核心問題進行…

Python-初學openCV——對openCV的簡單使用

一、概述1、簡單介紹OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺庫,旨在為實時圖像處理提供強大的功能。它由Intel開發,現由開源社區維護。OpenCV 提供了跨平臺的解決方案,支持 Windows、Linu…

去中心化時代的通信革命:briefing與cpolar技術融合帶來的安全范式革新

文章目錄前言1.關于briefing2.本地部署briefing3.使用briefing4.cpolar內網穿透工具安裝5.創建遠程連接公網地址6.固定briefing公網地址前言 數字協作本該是提升效率的過程,卻被這些數據管理問題不斷困擾:平臺條款中的監控聲明、跨網絡環境的接入障礙、…

GitHub新手生存指南:AI項目版本控制與協作實戰

點擊 “AladdinEdu,同學們用得起的【H卡】算力平臺”,H卡級別算力,按量計費,靈活彈性,頂級配置,學生專屬優惠。 代碼倉庫創建 分支管理 PR提交 開源項目復現 讀者收獲:掌握團隊開發必備技能…

Axios封裝以及添加攔截器

在前端開發中,http請求層的封裝可以極大提升代碼的復用性和可維護性,本文將完整的用axios封裝接口請求,配置請求與響應攔截器,封裝統一的請求方法全過程。封裝的目的和思路在項目直接用axios發送請求當然沒問題,但是如…

C語言中奇技淫巧04-僅對指定函數啟用編譯優化

相信很多人使用GCC編譯代碼時,都會接觸到gcc -O0/1/2/3/s,知道它可以對工程進行全局優化。 事實上,除了全局優化外,使用GCC擴展方式,我們還可以僅對部分關鍵函數實施差異化編譯優化。 在GCC編譯器中,attrib…

HTML Style 對象深度解析:從基礎到高級應用

一、Style 對象的核心概念定義與作用 Style 對象是 HTML DOM 中用于操作元素內聯樣式的接口,通過 element.style 訪問。它允許動態修改元素的 CSS 屬性,但僅能直接影響內聯樣式(即通過 style 屬性直接寫在標簽中的樣式)。與外部樣…

【C++】定義常量

在 C 中&#xff0c;有兩種簡單的定義常量的方式&#xff1a; 使用 #define 預處理器。使用 const 關鍵字。 #define 預處理器 #include <iostream> using namespace std;#define LENGTH 10 #define WIDTH 5 #define NEWLINE \nint main() {int area; area LENGTH …

基于遺傳算法的多無人車協同偵察與安全保護策略優化

基于遺傳算法的多無人車協同偵察與安全保護策略優化 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 1.1 研究背景與意義 隨著無人系統技術的快速發…