Python 數據分析與可視化 Day 14 - 建模復盤 + 多模型評估對比(邏輯回歸 vs 決策樹)

? 今日目標

  • 回顧整個本周數據分析 & 建模流程
  • 學會訓練第二種模型:決策樹(Decision Tree)
  • 掌握多模型對比評估的方法與實踐
  • 輸出綜合對比報告:準確率、精確率、召回率、F1 等指標
  • 為后續模型調優與擴展打下基礎

🪜 一、本周流程快速回顧

步驟內容
第1天高級數據操作(索引、透視、變形)
第2天缺失值和異常值處理
第3天多表合并與連接
第4天特征工程(編碼、歸一化、時間)
第5天數據集拆分(訓練集 / 測試集)
第6天邏輯回歸模型構建與評估
第7天🤖 多模型對比評估(今天)

🌲 二、訓練決策樹分類器

from sklearn.tree import DecisionTreeClassifiertree = DecisionTreeClassifier(random_state=42)
tree.fit(X_train, y_train)
y_pred_tree = tree.predict(X_test)

?? 三、模型對比評估

from sklearn.metrics import classification_reportprint("📋 Logistic 回歸:")
print(classification_report(y_test, y_pred_log))print("📋 決策樹模型:")
print(classification_report(y_test, y_pred_tree))

📊 可視化對比(可選)

import matplotlib.pyplot as pltmodels = ["Logistic", "DecisionTree"]
accuracies = [accuracy_score(y_test, y_pred_log),accuracy_score(y_test, y_pred_tree),
]plt.bar(models, accuracies, color=["skyblue", "lightgreen"])
plt.title("模型準確率對比")
plt.ylabel("Accuracy")
plt.show()

🧪 今日練習建議(腳本名:compare_models.py

  1. 讀取本周生成的訓練 / 測試數據

  2. 同時訓練邏輯回歸與決策樹模型

  3. 輸出各自的評估指標(Accuracy、Precision、Recall、F1)

  4. (可選)將結果寫入一個 CSV 或圖表可視化

  5. 思考不同模型優劣,以及如何選擇合適模型

    # compare_models.py
    import pandas as pd
    from sklearn.linear_model import LogisticRegression
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import (accuracy_score,classification_report,confusion_matrix
    )
    import matplotlib.pyplot as plt
    import seaborn as sns
    import osplt.rcParams['font.family'] = 'Arial Unicode MS'  # Mac 用戶可用
    plt.rcParams['axes.unicode_minus'] = False# 1. 加載訓練與測試數據
    data_dir = "data/model"
    X_train = pd.read_csv(os.path.join(data_dir, "X_train.csv"))
    X_test = pd.read_csv(os.path.join(data_dir, "X_test.csv"))
    y_train = pd.read_csv(os.path.join(data_dir, "y_train.csv")).values.ravel()
    y_test = pd.read_csv(os.path.join(data_dir, "y_test.csv")).values.ravel()# 2. 初始化模型
    log_model = LogisticRegression()
    tree_model = DecisionTreeClassifier(random_state=42)# 3. 模型訓練
    log_model.fit(X_train, y_train)
    tree_model.fit(X_train, y_train)# 4. 模型預測
    y_pred_log = log_model.predict(X_test)
    y_pred_tree = tree_model.predict(X_test)# 5. 評估結果
    print("📋 Logistic 回歸評估報告:")
    print(classification_report(y_test, y_pred_log))print("\n🌳 決策樹評估報告:")
    print(classification_report(y_test, y_pred_tree))# 6. 準確率對比
    acc_log = accuracy_score(y_test, y_pred_log)
    acc_tree = accuracy_score(y_test, y_pred_tree)# 7. 可視化混淆矩陣
    plt.figure(figsize=(10, 4))plt.subplot(1, 2, 1)
    sns.heatmap(confusion_matrix(y_test, y_pred_log, labels=[0, 1]), annot=True, fmt="d", cmap="Blues",xticklabels=["0", "1"], yticklabels=["0", "1"])
    plt.title("Logistic 回歸 - 混淆矩陣")
    plt.xlabel("預測", fontproperties="Arial Unicode MS")
    plt.ylabel("真實", fontproperties="Arial Unicode MS")plt.subplot(1, 2, 2)
    sns.heatmap(confusion_matrix(y_test, y_pred_tree, labels=[0, 1]), annot=True, fmt="d", cmap="Greens",xticklabels=["0", "1"], yticklabels=["0", "1"])
    plt.title("決策樹 - 混淆矩陣")
    plt.xlabel("預測", fontproperties="Arial Unicode MS")
    plt.ylabel("真實", fontproperties="Arial Unicode MS")plt.tight_layout()
    plt.show()# 8. 準確率柱狀圖
    plt.figure(figsize=(5, 4))
    plt.bar(["Logistic", "Decision Tree"], [acc_log, acc_tree], color=["skyblue", "lightgreen"])
    plt.title("模型準確率對比")
    plt.ylabel("Accuracy")
    plt.ylim(0, 1)
    plt.grid(axis='y', linestyle='--', alpha=0.7)
    plt.tight_layout()
    plt.show()# 9. 匯總結果(可選保存)
    results_df = pd.DataFrame({"模型": ["Logistic", "Decision Tree"],"準確率": [acc_log, acc_tree]
    })
    os.makedirs("data/result", exist_ok=True)
    results_df.to_csv("data/result/model_comparison.csv", index=False)
    print("\n? 對比結果已保存:data/result/model_comparison.csv")
    

    結果輸出:

    📋 Logistic 回歸評估報告:precision    recall  f1-score   support0       1.00      1.00      1.00         71       1.00      1.00      1.00        13accuracy                           1.00        20macro avg       1.00      1.00      1.00        20
    weighted avg       1.00      1.00      1.00        20🌳 決策樹評估報告:precision    recall  f1-score   support0       1.00      1.00      1.00         71       1.00      1.00      1.00        13accuracy                           1.00        20macro avg       1.00      1.00      1.00        20
    weighted avg       1.00      1.00      1.00        20? 對比結果已保存:data/result/model_comparison.csv
    

    可視化混淆矩陣:
    在這里插入圖片描述

    準確率柱狀圖:
    在這里插入圖片描述

    data/result/model_comparison.csv:
    在這里插入圖片描述
    PS:可以使用下面的代碼生成訓練/測試集:

    import pandas as pd
    import numpy as np
    from sklearn.model_selection import train_test_split
    import os# 構造示例數據
    np.random.seed(42)
    size = 100
    df = pd.DataFrame({"成績": np.random.randint(40, 100, size=size),"性別": np.random.choice(["男", "女"], size=size)
    })# 增加派生特征
    df["成績_標準化"] = (df["成績"] - df["成績"].mean()) / df["成績"].std()
    df["是否及格_數值"] = (df["成績"] >= 60).astype(int)
    df["性別_男"] = (df["性別"] == "男").astype(int)
    df["性別_女"] = (df["性別"] == "女").astype(int)# 特征與標簽
    X = df[["成績_標準化", "性別_男", "性別_女", "是否及格_數值"]]
    y = df["是否及格_數值"]# 拆分數據
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 保存路徑
    os.makedirs("data/model", exist_ok=True)
    X_train.to_csv("data/model/X_train.csv", index=False)
    X_test.to_csv("data/model/X_test.csv", index=False)
    y_train.to_csv("data/model/y_train.csv", index=False)
    y_test.to_csv("data/model/y_test.csv", index=False)
    

🧾 今日總結

  • 理解模型評估不止準確率,更要看精確率與召回率
  • 決策樹可捕捉非線性關系,但易過擬合
  • 模型選擇應結合業務背景、樣本數量、可解釋性等因素

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

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

相關文章

本周大模型新動向:KV緩存混合精度量化、個體時空行為生成、個性化問答

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入! 01 KVmix: Gradient-Based Layer Importance-Aware Mixed-Precision Quantization for KV Cache 大型語言模型(LLMs)在推理過程中,鍵值(KV)緩存的高內…

在 Spring Boot 中使用 WebMvcConfigurer

WebMvcConfigurer 是 Spring MVC 提供的一個擴展接口,用于配置 Spring MVC 的各種功能。在 Spring Boot 應用中,通過實現 WebMvcConfigurer 接口,可以定制和擴展默認的 Spring MVC 配置。以下是對 WebMvcConfigurer 的詳細解析及其常見用法。…

w-筆記:uni-app的H5平臺和非H5平臺的拍照識別功能:

uni-app的H5平臺和非H5平臺的拍照識別功能&#xff1a; <template><view class"humanVehicleBinding"><view v-if"warn" class"shadow"></view><view class"header"><uni-nav-bar left-icon"l…

TCP 半連接隊列和全連接隊列(結合 Linux 2.6.32 內核源碼分析)

文章目錄 一、什么是 TCP 半連接隊列和全連接隊列二、TCP 全連接隊列1、如何查看進程的 TCP 全連接隊列大小&#xff1f;注意 2、TCP 全連接隊列溢出問題注意 3、TCP 全連接隊列最大長度 三、TCP 半連接隊列1、TCP 半連接隊列溢出問題2、TCP 半連接隊列最大長度3、引申問題 一、…

linux下fabric環境搭建

參考教程&#xff1a; https://devpress.csdn.net/cloudnative/66d58e702045de334a569db3.html?dp_tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MjA2MzY4NywiZXhwIjoxNzQwMzY4MDc0LCJpYXQiOjE3Mzk3NjMyNzQsInVzZXJuYW1lIjoiaHVhbmd0dXBpIn0.oh8e4F6Sw_A4SV2ODQ5W0pYK0…

Redis Pipeline介紹:提高操作Redis數據庫的執行效率

Redis Pipeline是一種用于提高Redis執行效率的技術&#xff0c;通過減少客戶端與服務器之間的通信開銷&#xff0c;顯著提升批量操作的性能。本文將詳細介紹Redis Pipeline的概念、使用場景、實現方式及其優勢。 一、Redis Pipeline的概念 Redis Pipeline是一種批處理機制&am…

linux長時間鎖屏無法喚醒

是的&#xff0c;您這么理解很直接&#xff0c;抓住了要點。 簡單來說&#xff0c;就是這樣&#xff1a; 電腦睡覺有兩種方式&#xff1a; 打個盹&#xff08;掛起/Suspend&#xff09;&#xff1a; 把工作狀態保存在內存里。這個一般和 Swap 分區沒關系。睡死過去&#xff…

STM32F103_Bootloader程序開發11 - 實現 App 安全跳轉至 Bootloader

導言 想象一下&#xff0c;我們的單片機 App 正在穩定地運行著&#xff0c;突然我們想給它升級一下&#xff0c;添加個新功能。我們該如何安全地通知它&#xff1a;“嘿&#xff0c;準備好接收新固件了” ? 這就需要 App 和 Bootloader 之間建立一個可靠的"秘密握手"…

Explain解釋

參考官方文檔&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/explain-output.html explain關鍵字可以分析你的查詢語句的結構和性能。 explain select查詢&#xff0c; 執行會返回執行計劃的信息。 注意&#xff1a;如果from中有子查詢&#xff0c;仍然會執行該子查詢…

選擇 PDF 轉 HTML 轉換器的 5 個關鍵特性

市面上有很多 PDF 轉 HTML 的轉換器&#xff0c;每一款產品都有不同的功能組合。要理清并理解每個功能可能會讓人感到困惑。那么&#xff0c;真正重要的是什么呢&#xff1f; 這篇文章將介紹我們認為在選擇最佳 PDF 轉 HTML 轉換器時最重要的 5 個關鍵特性&#xff1a; 1. 轉換…

使用堡塔在服務器上部署寶塔面板-linux版

使用堡塔在服務器上部署寶塔面板-linux版 使用堡塔多機管理登錄服務器 進入寶塔官網&#xff0c;獲取安裝腳本 wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec3. 在堡塔多機管理中&#xff0c;…

【Unity高級】Unity多界面游戲場景管理方案詳解

引言&#xff1a;游戲界面管理的挑戰 在Unity游戲開發中&#xff0c;尤其是包含多個功能界面&#xff08;如主菜單、關卡選擇、游戲頁面、設置和商城&#xff09;的游戲&#xff0c;如何高效管理場景與界面是架構設計的核心挑戰。本文將深入探討三種主流實現方案&#xff1a;單…

WINDOWS最快布署WEB服務器:apache2

安裝JDK下載 https://tomcat.apache.org/ Index of /dist/tomcat/tomcat-9 安裝測試 http://localhost:8080/ 替換自己的文件 把自己的文件復制到&#xff1a; C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT

Microsoft Edge 打開無反應、打開后顯示兼容性問題、卸載重裝 解決方案。一鍵卸載Microsoft Edge 。

背景&#xff1a;網絡上的瀏覽器修復、重裝、恢復默認應用測試后無用&#xff0c;以下卸載重裝方案經實測可以正常使用Microsoft Edg。 卸載軟件在資源里&#xff0c;請自取。 一、卸載軟件&#xff1a;Remove-Edge_GUI.exe 雙擊卸載等待即可。 二、在微軟商店重新安裝Micro…

Spring Boot - 參數校驗:分組校驗、自定義注解、嵌套對象全解析

01 依賴配置 在構建高效的校驗體系前&#xff0c;需先完善項目依賴配置。 以下是優化后的依賴示例&#xff1a; <dependencies><!-- Web 依賴&#xff0c;提供 RESTful 接口支持 --><dependency><groupId>org.springframework.boot</groupId>…

深入淺出多模態》(十一)之多模態經典模型:Flamingo系列

&#x1f389;AI學習星球推薦&#xff1a; GoAI的學習社區 知識星球是一個致力于提供《機器學習 | 深度學習 | CV | NLP | 大模型 | 多模態 | AIGC 》各個最新AI方向綜述、論文等成體系的學習資料&#xff0c;配有全面而有深度的專欄內容&#xff0c;包括不限于 前沿論文解讀、…

基于Pandas和FineBI的昆明職位數據分析與可視化實現(三)- 職位數據統計分析

文章目錄 一、職位數據分析1. 一級分類職位數量統計分析2. 職位二級分類分布分析3. 職位分布分析4. 工作經驗需求分布分析5. 學歷要求職位分布分析6. 企業職位供給前507. 不同規模公司的職位數量統計8. 區域職位分布分析9. 各區域平均薪資范圍分布分析10. 不同工作經驗平均薪資…

大數據Hadoop之——安裝部署hadoop

目錄 前期準備 一、JDK的安裝 1、安裝jdk 2、配置Java環境變量 3、加載環境變量 4、進行校驗 二、hadoop的環境搭建 1、hadoop的下載安裝 2、配置文件設置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置 hdfs-site.xml 2.4. 配置 yarn-site.xml 2.…

Spring IoC DI介紹

文章目錄 IoC & DI 介紹IoC介紹DI 介紹 組件注冊Bean 命名約定方法注解 Bean總結 掃描路徑DI 詳解屬性注入構造方法注入Setter 注入三種注入優缺點分析 當同一類型存在多個Bean時,直接使用Autowired會存在問題使用Primary注解使用Qualifier注解使用Bean的名稱使用Resource注…

【Flutter】解決 flutter_inappwebview在 Windows 上使用導致應用閃退問題

問題背景 在 Windows 11 上運行 Flutter 桌面應用時&#xff0c;應用出現閃退現象。通過系統事件日志分析&#xff0c;發現是 MSVCP140.dll 模塊的訪問沖突異常&#xff08;錯誤代碼 c0000005&#xff09;導致的崩潰。 問題分析 1. 錯誤現象 應用啟動后立即閃退Windows 事件…