
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 技能要求
- ML - 實現
- ML - 挑戰與常見問題
- ML - 侷限性
- ML - 現實案例
- ML - 資料結構
- ML - 數學
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 類別資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習與無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- 機器學習中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- 機器學習中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- 機器學習中的聚類演算法
- ML - 聚類演算法
- ML - 基於質心的聚類
- ML - K均值聚類
- ML - K中心點聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN聚類
- ML - OPTICS聚類
- ML - HDBSCAN聚類
- ML - BIRCH聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- 機器學習中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 後退消除法
- ML - 前向特徵構造
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE演算法
- ML - SARSA強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用Python的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精確率和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪次
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的貨幣化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 精確率和召回率
精確率和召回率是機器學習中用於評估分類模型效能的兩個重要指標。它們對於不平衡資料集特別有用,在不平衡資料集中,一類例項的數量明顯少於其他類。
精確率衡量的是分類器做出的所有正預測中,有多少是正確的。它定義為真陽性 (TP) 與正預測總數 (TP + FP) 的比率。換句話說,精確率衡量的是所有正預測中真陽性的比例。
$$精確率=TP/\left ( TP+FP \right )$$
另一方面,召回率衡量的是分類器正確識別了多少實際正例項。它定義為真陽性 (TP) 與實際正例項總數 (TP + FN) 的比率。換句話說,召回率衡量的是所有實際正例項中真陽性的比例。
$$召回率=TP/\left ( TP+FN \right )$$
要理解精確率和召回率,請考慮檢測垃圾郵件的問題。分類器可能會將電子郵件標記為垃圾郵件(正預測)或非垃圾郵件(負預測)。電子郵件的實際標籤可以是垃圾郵件或非垃圾郵件。如果電子郵件實際上是垃圾郵件,並且分類器將其正確標記為垃圾郵件,則它是真陽性。如果電子郵件不是垃圾郵件,但分類器錯誤地將其標記為垃圾郵件,則它是假陽性。如果電子郵件實際上是垃圾郵件,但分類器錯誤地將其標記為非垃圾郵件,則它是假陰性。最後,如果電子郵件不是垃圾郵件,並且分類器將其正確標記為非垃圾郵件,則它是真陰性。
在這種情況下,精確率衡量的是分類器正確識別為垃圾郵件的垃圾郵件比例。高精確率表明分類器正在正確識別大多數垃圾郵件,並且沒有將許多合法電子郵件標記為垃圾郵件。另一方面,召回率衡量的是分類器正確識別出的所有垃圾郵件的比例。高召回率表明分類器正在正確識別大多數垃圾郵件,即使它將某些合法電子郵件標記為垃圾郵件。
在 Python 中實現
在 scikit-learn 中,可以使用 precision_score() 和 recall_score() 函式分別計算精確率和召回率。這些函式將例項的真標籤和預測標籤作為輸入,並返回相應的精確率和召回率得分。
例如,以下程式碼片段使用 scikit-learn 中的乳腺癌資料集來訓練邏輯迴歸分類器並評估其精確率和召回率得分 -
示例
from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import precision_score, recall_score # Load the breast cancer dataset data = load_breast_cancer() # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # Train a logistic regression classifier clf = LogisticRegression(random_state=42) clf.fit(X_train, y_train) # Make predictions on the testing set y_pred = clf.predict(X_test) # Calculate precision and recall scores precision = precision_score(y_test, y_pred) recall = recall_score(y_test, y_pred) print("Precision:", precision) print("Recall:", recall)
在上面的示例中,我們首先載入乳腺癌資料集並將其拆分為訓練集和測試集。然後,我們在訓練集上訓練邏輯迴歸分類器,並使用 predict() 方法對測試集進行預測。最後,我們使用 precision_score() 和 recall_score() 函式計算精確率和召回率得分。
輸出
執行此程式碼時,它將產生以下輸出 -
Precision: 0.9459459459459459 Recall: 0.9859154929577465