AI入門學習-模型評估示例講解

from sklearn.metrics import classification_report, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification# 生成示例分類數據
# n_samples: 樣本數量, n_features: 特征數量, n_classes: 類別數量
X, y = make_classification(n_samples=1000,  # 1000個樣本n_features=20,   # 20個特征n_classes=2,     # 二分類問題random_state=42  # 隨機種子,保證結果可重現
)
print("示例數據:")
print(X, y)# 將數據分為訓練集和測試集
# test_size=0.2: 20%數據作為測試集,80%作為訓練集
# random_state=42: 固定隨機種子,確保每次分割結果相同
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42
)# 創建并訓練一個隨機森林分類器
# n_estimators: 樹的數量, random_state: 隨機種子
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)  # 使用訓練數據擬合模型# 分類模型評估
y_pred = model.predict(X_test)  # 使用模型對測試集進行預測# 輸出分類報告:包含precision(精確率)、recall(召回率)、f1-score和support(支持數)
print("分類報告:")
print(classification_report(y_test, y_pred))# 輸出混淆矩陣:展示預測結果與實際結果的對比
print("混淆矩陣:\n", confusion_matrix(y_test, y_pred))
  1. 導入必要的庫:

    • classification_report?和?confusion_matrix?用于模型評估
    • train_test_split?用于分割訓練集和測試集
    • RandomForestClassifier?是我們使用的分類模型
    • make_classification?用于生成示例數據
  2. 生成示例數據:

    • 使用?make_classification?生成 1000 個樣本,每個樣本有 20 個特征
    • 這是一個二分類問題(n_classes=2)
    • random_state=42?確保每次運行生成相同的數據,便于結果重現
  3. 分割數據集:

    • 將數據分為訓練集(80%)和測試集(20%)
    • 訓練集用于模型訓練,測試集用于評估模型性能
  4. 創建并訓練模型:

    • 使用隨機森林分類器,包含 100 棵決策樹
    • fit?方法用于訓練模型,接收訓練數據(X_train)和對應的標簽(y_train)
  5. 模型預測與評估:

    • model.predict(X_test)?用訓練好的模型對測試集進行預測,得到預測標簽 y_pred
    • classification_report?計算并打印分類指標:
      • precision(精確率):預測為正的樣本中實際為正的比例
      • recall(召回率):實際為正的樣本中被正確預測的比例
      • f1-score:精確率和召回率的調和平均
      • support:每個類別的實際樣本數量
      • accuracy(準確率)

        • 含義:所有預測中正確預測的比例
        • 計算公式:(TP + TN) / (TP + TN + FP + FN)
        • 解讀:直觀反映模型的整體正確率,但在類別不平衡時可能有誤導性(例如 99% 樣本是正類,模型全預測為正類也能達到 99% 準確率)
      • macro avg(宏平均)

        • 含義:先計算每個類別的指標(精確率、召回率、F1 分數),再取簡單平均值(不考慮類別樣本數量)
        • 特點:對所有類別一視同仁,無論每個類別的樣本數量多少
        • 適用場景:希望平等關注每個類別(尤其是小樣本類別)的場景
      • weighted avg(加權平均)

        • 含義:先計算每個類別的指標,再根據每個類別的樣本數量(support)進行加權平均
        • 特點:樣本數量多的類別對結果影響更大
        • 適用場景:類別不平衡時,更能反映模型在整體數據上的表現

總結:優先看?accuracy?了解整體表現,類別不平衡時,weighted avg?比?macro avg?更有參考價值,關注小類別表現時,需重點看該類別的單獨指標而非宏平均

  • confusion_matrix?展示混淆矩陣,直觀顯示各類別預測正確和錯誤的數量
    • TP(True Positive):真實為正例,預測也為正例(正確預測)
    • FN(False Negative):真實為正例,預測為負例(漏檢)
    • FP(False Positive):真實為負例,預測為正例(誤檢)
    • TN(True Negative):真實為負例,預測也為負例(正確預測)

? ?總結:??從混淆矩陣中能獲取的關鍵信息模型的錯誤類型是漏檢(FN)多還是誤檢(FP)多。類別預測的穩定性,若某一類別的對角線元素(TP/TN)占比低,說明模型對該類的預測效果差。

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

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

相關文章

Python編程:初入Python魔法世界

一、常量表達式在編程中,常量指的是在程序執行期間其值不會改變的數據項。雖然 Python 并沒有專門的語法來定義常量(不像某些其他語言如 Java 中有 final 關鍵字),但在實踐中,我們通常通過約定俗成的方式來表示一個變量…

Android WorkManager 詳解:高效管理后臺任務

引言在現代移動應用開發中,后臺任務處理是一個至關重要的功能。從同步數據到定期備份,從發送通知到處理耗時操作,后臺任務無處不在。然而,Android系統對后臺任務的限制越來越嚴格,開發者需要找到既高效又符合系統規范的…

MCU(微控制器)中的高電平與低電平?

MCU(微控制器)中的高電平與低電平? 在數字電路和MCU(微控制器)中,**高電平(High Level)和低電平(Low Level)**是兩種基本的邏輯狀態,用于表示二進…

前端項目下載發票pdf文件要求改文件名筆記

1、a鏈接&#xff08;修改失敗&#xff0c;存在跨域&#xff09;<el-table-columnalignrightlabel"下載地址"width"200"><template slot-scope"{row}"><a :href"row.dataUrl" download"文件名">下載</…

Kotlin 數據容器 - List(List 概述、創建 List、List 核心特性、List 元素訪問、List 遍歷)

一、List 概述List 是一個不可變的有序集合&#xff0c;一旦創建就不能修改其內容&#xff0c;即不能添加、刪除、更改元素List 提供了豐富的操作函數來處理數據二、創建 List 1、基礎創建 通過 listOf 函數創建&#xff08;推薦&#xff09; // 創建一個 List&#xff0c;包含…

HarmonyOS NEXT 系列之規范開發三方共享包

規范開發三方共享包〇、前言一、了解評分規則二、規范開發共享包1、規范開源協議名稱寫法2、將 oh-package.json5 文件補充完整3、補充 example 目錄4、基本的 README 和 CHANGELOG三、ohpm 包的源碼隔離特性〇、前言 對于開發者來說&#xff0c;對外發布代碼制品&#xff0c;…

[電網備考]計算機組成與原理

計算機系統概述 計算機發展歷程 從數據表示: 計算機可以分為數字計算機與模擬計算機 1946 第一臺電子數字計算機 ENIAC 在賓夕法尼亞大學誕生,標志進入電子計算機時代時間計算機發展階段1946-1958電子管計算機時代1958-1964晶體管計算機時代1964-1971集成電路計算機時代1971-至…

8.c語言指針

內存管理C語言中&#xff0c;棧內存&#xff08;局部變量&#xff09;自動分配/釋放&#xff0c;靜態區&#xff08;全局、靜態變量&#xff09;編譯時分配&#xff1b;堆內存需手動分配/釋放&#xff0c;核心函數有3個&#xff1a;malloc函數原型&#xff1a;void* malloc(siz…

使用GPU訓練模型

本文代碼詳解參考&#xff1a; 模型訓練基礎流程-CSDN博客 目錄 為什么要用GPU訓練模型 什么是CUDA 利用GPU訓練—方式一(.cuda()) 利用GPU訓練—方式二 (.to()) Google Colaboratory 為什么要用GPU訓練模型 用 GPU 訓練模型的核心原因是GPU 的硬件架構和計算特性&#…

Matlab學習筆記:自定義函數

MATLAB 學習筆記&#xff1a;自定義函數自定義函數是MATLAB編程的基礎&#xff0c;它允許你將重復代碼封裝成可重用的模塊&#xff0c;提高代碼的可讀性和效率。本筆記將覆蓋所有重點知識點&#xff0c;包括語法細節、輸入輸出處理、函數文件管理、錯誤處理等。我會用自然易懂的…

【數學建模 | Matlab】二維繪圖 和 三維繪圖

- 第 115 篇 - Date: 2025 - 07 - 23 Author: 鄭龍浩&#xff08;仟墨&#xff09; 續寫上一篇&#xff0c;如下文章&#xff1a; 【數學建模|Matlab】Matlab「基礎知識」和「基礎操作」 五 二維繪圖 1 舉例 % 二維平面繪圖&#xff08;擴展至 -2π 到 2π&#xff09; x …

MCP (Model Context Protocol) 與 HTTP API:大模型時代的通信新范式

MCP (Model Context Protocol) 與 HTTP API&#xff1a;大模型時代的通信新范式在數字世界的兩端&#xff0c;API 扮演著不可或缺的橋梁角色。我們熟知的 HTTP API 是 Web 互聯互通的基石&#xff0c;驅動著無數應用程序的交互。然而&#xff0c;隨著大型語言模型&#xff08;L…

CentOS 搭建 Docker 私有鏡像倉庫

CentOS 搭建 Docker 私有鏡像倉庫 搭建 Docker 私有鏡像倉庫能為團隊提供高效、安全的鏡像管理方案。下面將詳細介紹每個步驟的操作細節&#xff0c;其中命令部分均用代碼塊展示。 一、環境準備 要搭建 Docker 私有鏡像倉庫&#xff0c;首先得確保服務器環境符合要求&#xff0…

Zookeeper的簡單了解

Zookeeper的簡單了解 Zookeeper是一個為分布式應用程序提供協調服務的中間件。 主要作用有三點&#xff1a;分布式鎖、注冊中心、配置管理、。 特點有讀寫速度快&#xff08;內存存儲&#xff09;、有監聽機制&#xff08;用于發布訂閱&#xff09;、保證了順序一致性&#xff…

Android Fragment 全解析

在 Android 開發中&#xff0c;Fragment 是構建靈活界面的核心組件 —— 它既能像 “迷你 Activity” 一樣包含布局和邏輯&#xff0c;又能靈活地嵌入到不同 Activity 中復用。無論是平板的多面板布局&#xff0c;還是手機的單頁切換&#xff0c;Fragment 都能讓界面適配更高效…

0-1BFS(雙端隊列,洛谷P4667 [BalticOI 2011] Switch the Lamp On 電路維修 (Day1)題解)

對于權重為0或1的路徑搜索中&#xff0c;使用雙端隊列可以對最短路問題進行時間復雜度的優化&#xff0c;由于優先隊列的O(longn)級別的插入時間&#xff0c;對于雙端隊列O(1)插入可以將時間復雜度減少至O(M); https://www.luogu.com.cn/problem/P4667 #include<bits/stdc…

基于LNMP架構的分布式個人博客搭建

1.運行環境主機主機名系統服務192.168.75.154Server-WebLinuxWeb192.168.75.155Server-NFS-DNSLinuxNFS/DNS2.基礎配置配置主機名&#xff0c;靜態IP地址開啟防火墻并配置部分開啟SElinux并配置服務器之間使用同ntp.aliyun.com進行時間同步服務器之間使用用ntp.aliyun.com進行時…

基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的人格品牌化實現路徑研究

摘要&#xff1a;在數字化消費時代&#xff0c;人格品牌化已成為企業突破同質化競爭的核心策略。本文以開源AI智能名片、鏈動21模式與S2B2C商城小程序的融合為切入點&#xff0c;構建“技術賦能-關系重構-價值共生”的人格品牌化理論框架。通過分析用戶觸達、信任裂變與價值沉淀…

設計模式十一:享元模式(Flyweight Pattern)

享元模式是一種結構型設計模式&#xff0c;它通過共享對象來最小化內存使用或計算開銷。這種模式適用于大量相似對象的情況&#xff0c;通過共享這些對象的公共部分來減少資源消耗。基本概念享元模式的核心思想是將對象的內在狀態&#xff08;不變的部分&#xff09;和外在狀態…

Webpack/Vite 終極指南:前端開發的“渦輪增壓引擎“

開篇:當你的項目變成"俄羅斯套娃" "我的index.js怎么引入了87個文件?!" —— 這是每個前端開發者第一次面對復雜項目依賴時的真實反應。別擔心,今天我要帶你認識兩位"打包俠":老牌勁旅Webpack和新銳黑馬Vite 一、構建工具:前端世界的&qu…