學(xué)習(xí)日記 7.28
在機器學(xué)習(xí)的學(xué)習(xí)之路上線性回歸和邏輯回歸是兩塊重要的基石。今天我們將通過兩個實戰(zhàn)案例從理論到代碼全面掌握這兩種算法的應(yīng)用案例一多元線性回歸—— 根據(jù)體重和年齡預(yù)測血壓收縮壓案例二邏輯回歸—— 信用卡欺詐交易檢測Kaggle 經(jīng)典數(shù)據(jù)集。一、多元線性回歸1.1 什么是多元線性回歸簡單線性回歸使用一個自變量來預(yù)測因變量而多元線性回歸則使用兩個或以上的自變量。其數(shù)學(xué)表達(dá)式為y β? β?x? β?x? ... β?x? ε其中y是目標(biāo)變量因變量x?, x?, ..., x?是特征自變量β?是截距β?, β?, ..., β?是回歸系數(shù)ε是誤差項。1.2 實戰(zhàn)血壓預(yù)測數(shù)據(jù)集我們使用的數(shù)據(jù)集包含三個字段體重、年齡、血壓收縮共 14 條記錄。體重(kg)年齡(歲)血壓收縮(mmHg)76.05012091.52014185.52012482.53012679.030117.........完整代碼import pandas as pd from sklearn.linear_model import LinearRegression 1. 讀取數(shù)據(jù) data pd.read_csv(多元線性回歸.csv, encodinggbk, enginepython) 2. 查看相關(guān)性 —— 了解各特征與目標(biāo)變量之間的關(guān)系 corr data[[體重, 年齡, 血壓收縮]].corr() print( 相關(guān)性矩陣 ) print(corr) 3. 創(chuàng)建模型 lr_model LinearRegression() 4. 準(zhǔn)備特征和目標(biāo)變量 x data[[體重, 年齡]] # 特征矩陣 y data[血壓收縮] # 目標(biāo)變量 5. 訓(xùn)練模型 lr_model.fit(x, y) 6. 模型評估 —— R2 分?jǐn)?shù) score lr_model.score(x, y) print(f\n模型 R2 分?jǐn)?shù): {score}) 7. 查看模型參數(shù) print(f\n回歸系數(shù): {lr_model.coef_}) print(f截距: {lr_model.intercept_:.2f})運行結(jié)果 相關(guān)性矩陣 體重 年齡 血壓收縮 體重 1.000000 -0.700283 0.906402 年齡 -0.700283 1.000000 -0.382773 血壓收縮 0.906402 -0.382773 1.000000 模型 R2 分?jǐn)?shù): 0.9461441227520285結(jié)果深度解讀1. 相關(guān)性矩陣分析體重 年齡 血壓收縮 體重 1.000000 -0.700283 0.906402 年齡 -0.700283 1.000000 -0.382773 血壓收縮 0.906402 -0.382773 1.000000從相關(guān)性矩陣中可以得出以下結(jié)論關(guān)系相關(guān)系數(shù)解讀體重 ? 血壓收縮0.906強正相關(guān)—— 體重越大收縮壓越高。這是影響血壓的最主要因素年齡 ? 血壓收縮-0.383弱負(fù)相關(guān)—— 在這組數(shù)據(jù)中年齡與血壓呈現(xiàn)輕微負(fù)相關(guān)體重 ? 年齡-0.700中等負(fù)相關(guān)—— 數(shù)據(jù)中體重和年齡存在一定的負(fù)相關(guān)關(guān)系關(guān)鍵發(fā)現(xiàn)體重的相關(guān)系數(shù)高達(dá) 0.906說明體重是影響收縮壓的核心因素。而年齡在本數(shù)據(jù)集中與收縮壓呈弱負(fù)相關(guān)-0.383這可能與樣本特性有關(guān)。2. R2 分?jǐn)?shù)分析模型 R2 分?jǐn)?shù)為0.9461這意味著模型能夠解釋94.61%的血壓收縮壓變化。擬合效果非常好說明體重和年齡這兩個特征對血壓有很強的解釋力。不過需要注意這里 R2 是在訓(xùn)練集上計算的沒有做訓(xùn)練集/測試集劃分14 條數(shù)據(jù)太少。在實際項目中應(yīng)該劃分?jǐn)?shù)據(jù)集并用測試集來評估避免過擬合。二、邏輯回歸 —— 信用卡欺詐檢測2.1 什么是邏輯回歸盡管名字里有回歸但邏輯回歸是一種分類算法。它通過 Sigmoid 函數(shù)將線性回歸的輸出映射到 [0, 1] 區(qū)間從而得到屬于某個類別的概率P(y1|x) 1 / (1 e^-(β? β?x? ... β?x?))對于二分類問題通常設(shè)定閾值為 0.5概率 ≥ 0.5 → 正類1欺詐交易概率 0.5 → 負(fù)類0正常交易。2.2 數(shù)據(jù)集介紹本案例使用的是Kaggle 信用卡欺詐檢測數(shù)據(jù)集包含約 28.5 萬條交易記錄。字段說明Time交易時間秒V1 ~ V28PCA 降維后的特征脫敏處理Amount交易金額Class標(biāo)簽0 正常交易1 欺詐交易2.3 完整代碼詳解Step 1讀取數(shù)據(jù)并查看基本信息import pandas as pd data pd.read_csv(r./creditcard.csv) print(data.head())輸出結(jié)果前 5 行Time V1 V2 V3 V4 V5 ... V27 V28 Amount Class 0 0.0 -1.359807 -0.072781 2.536347 1.378155 -0.338321 ... 0.133558 -0.021053 149.62 0 1 0.0 1.191857 0.266151 0.166480 0.448154 0.060018 ... -0.008983 0.014724 2.69 0 2 1.0 -1.358354 -1.340163 1.773209 0.379780 -0.503198 ... -0.055353 -0.059752 378.66 0 3 1.0 -0.966272 -0.185226 1.792993 -0.863291 -0.010309 ... 0.062723 0.061458 123.50 0 4 2.0 -1.158233 0.877737 1.548718 0.403034 -0.407193 ... 0.219422 0.215153 69.99 0 [5 rows x 31 columns]數(shù)據(jù)共有 31 列包含 28 個 PCA 特征V1~V28、Time、Amount 和 Class 標(biāo)簽??梢钥吹?Amount 列的數(shù)值149.62, 2.69, 378.66...差異很大后面需要進(jìn)行標(biāo)準(zhǔn)化處理。Step 2數(shù)據(jù)預(yù)處理 —— Z-score 標(biāo)準(zhǔn)化from sklearn.preprocessing import StandardScaler scaler StandardScaler() data[Amount] scaler.fit_transform(data[[Amount]]) data data.drop([Time], axis1)為什么要對 Amount 做標(biāo)準(zhǔn)化Amount列的數(shù)值范圍0 ~ 25691遠(yuǎn)大于 V1~V28經(jīng)過 PCA 后基本在 [-5, 5] 范圍內(nèi)。如果不進(jìn)行標(biāo)準(zhǔn)化模型會錯誤地認(rèn)為 Amount 比其他特征重要得多從而影響模型效果。Z-score 標(biāo)準(zhǔn)化公式z?? (x?? - x??) / s?x??該特征的均值數(shù)學(xué)期望s?該特征的標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化后數(shù)據(jù)均值為 0標(biāo)準(zhǔn)差為 1。這里我們把Time列刪除了 —— 交易發(fā)生的絕對時間與欺詐行為之間通常沒有直接的線性關(guān)系保留它反而可能引入噪聲。Step 3數(shù)據(jù)可視化 —— 查看正負(fù)樣本分布import matplotlib.pyplot as plt from pylab import mpl 解決中文顯示問題 mpl.rcParams[font.sans-serif] [Microsoft YaHei] mpl.rcParams[axes.unicode_minus] False 統(tǒng)計類別數(shù)量并繪圖 labels_count data[Class].value_counts() print(labels_count) plt.title(正負(fù)樣本分布) plt.xlabel(類別) plt.ylabel(頻數(shù)) labels_count.plot(kindbar) plt.show()輸出結(jié)果Class 0 284315 1 492 Name: count, dtype: int64這個結(jié)果非常震撼類別數(shù)量占比正常交易0284,31599.83%欺詐交易14920.17%關(guān)鍵發(fā)現(xiàn)正常交易和欺詐交易的比例約為578:1這意味著每 579 筆交易中才可能出現(xiàn) 1 筆欺詐交易 —— 這是一個極度不平衡的數(shù)據(jù)集。Step 4劃分訓(xùn)練集和測試集from sklearn.model_selection import train_test_split X_model data.drop([Class], axis1) # 特征矩陣29列 y_model data.Class # 標(biāo)簽列 X_train_w, X_test_w, y_train_w, y_test_w train_test_split( X_model, y_model, test_size0.3, # 30% 作為測試集 random_state1000 # 隨機種子保證結(jié)果可復(fù)現(xiàn) )train_test_split 參數(shù)說明參數(shù)含義test_size0.330% 的數(shù)據(jù)劃分為測試集70% 為訓(xùn)練集random_state1000固定隨機種子確保每次運行得到相同的劃分結(jié)果Step 5訓(xùn)練邏輯回歸模型from sklearn.linear_model import LogisticRegression C 是正則化強度的倒數(shù)C 越小正則化越強模型越簡單 lr LogisticRegression(C0.01) lr.fit(X_train_w, y_train_w)關(guān)于參數(shù) C 的深入理解C是正則化強度的倒數(shù)。C 0.01正則化非常強 → 防止模型過擬合。邏輯回歸默認(rèn)使用L2 正則化嶺回歸。這里選較小的 C 值是因為數(shù)據(jù)極度不平衡需要用強正則化來約束模型。Step 6模型評估test_predicted lr.predict(X_test_w) # 對測試集進(jìn)行預(yù)測 result lr.score(X_test_w, y_test_w) # 計算準(zhǔn)確率 print(f模型準(zhǔn)確率: {result})輸出結(jié)果模型準(zhǔn)確率: 0.9990168884519505運行結(jié)果深度解讀準(zhǔn)確率高達(dá)99.90%這看起來非常優(yōu)秀但這里有一個重要陷阱準(zhǔn)確率 99.90% 并不意味著模型真的很好還記得我們之前統(tǒng)計的類別分布嗎欺詐交易只占 0.17%。如果我們寫一個傻瓜模型——把所有交易都預(yù)測為正常交易# 傻瓜策略全部預(yù)測為 0 dummy_accuracy (y_test_w 0).sum() / len(y_test_w) print(f全部預(yù)測為正常的準(zhǔn)確率: {dummy_accuracy}) # 輸出約: 0.9983 (99.83%)這個什么都不做的策略也能達(dá)到99.83%的準(zhǔn)確率所以核心結(jié)論在不平衡數(shù)據(jù)集中準(zhǔn)確率Accuracy不是一個可靠的評估指標(biāo)。我們需要關(guān)注的是精確率Precision被預(yù)測為欺詐的交易中有多少是真正的欺詐召回率Recall真正的欺詐交易中有多少被模型檢測出來了F1 分?jǐn)?shù)精確率和召回率的調(diào)和平均。AUC-ROC模型區(qū)分正負(fù)樣本的能力。三、線性回歸 vs 邏輯回歸對比總結(jié)對比維度線性回歸邏輯回歸任務(wù)類型回歸預(yù)測連續(xù)值分類預(yù)測離散類別輸出范圍(-∞, ∞)[0, 1]概率值損失函數(shù)均方誤差MSE交叉熵?fù)p失Log Loss激活函數(shù)無線性輸出Sigmoid 函數(shù)評估指標(biāo)R2, MAE, MSE, RMSE精確率、召回率、F1、AUC-ROC典型應(yīng)用房價預(yù)測、氣溫預(yù)測垃圾郵件檢測、欺詐檢測、疾病診斷四、實戰(zhàn)經(jīng)驗總結(jié)4.1 兩個案例的對比啟示維度案例一線性回歸案例二邏輯回歸數(shù)據(jù)量14 條小樣本28.5 萬條大數(shù)據(jù)特征數(shù)2 個29 個核心挑戰(zhàn)樣本太少容易過擬合樣本極度不平衡R2/準(zhǔn)確率0.9461優(yōu)秀0.9990看似優(yōu)秀實則存疑可信度需更多數(shù)據(jù)驗證不能只看準(zhǔn)確率4.2 關(guān)鍵R2 0.9461 說明什么體重和年齡共同解釋了 94.61% 的血壓變異。但 14 條數(shù)據(jù)太少模型可能過擬合需要更多樣本驗證。準(zhǔn)確率 99.90% 說明什么單獨看模型表現(xiàn)極好。結(jié)合類別分布看幾乎所有樣本都是負(fù)類全部預(yù)測為 0也有 99.83%。真相模型的提升僅為 0.07%這點提升來自正確識別了極少數(shù)的欺詐交易。數(shù)據(jù)預(yù)處理的重要性Amount 標(biāo)準(zhǔn)化消除量綱差異避免大數(shù)值特征主導(dǎo)模型Time 刪除去除與目標(biāo)變量無關(guān)的特征減少噪聲相關(guān)性分析中體重與血壓的相關(guān)性0.906遠(yuǎn)超年齡-0.383。五、進(jìn)階建議針對信用卡欺詐檢測案例可以從以下方向繼續(xù)優(yōu)化處理樣本不平衡設(shè)置class_weightbalanced讓模型自動按類別頻率調(diào)整權(quán)重或用 SMOTE 過采樣random_state42固定隨機種子保證結(jié)果可復(fù)現(xiàn)。更全面的模型評估不平衡數(shù)據(jù)中準(zhǔn)確率不可靠應(yīng)關(guān)注精確率、召回率、F1 和 AUC用classification_report和roc_auc_score全面評估。

相關(guān)新聞

AI數(shù)字人口播訓(xùn)練全周期,從唇形同步誤差<0.3幀到通過抖音AIGC白名單認(rèn)證

AI數(shù)字人口播訓(xùn)練全周期,從唇形同步誤差<0.3幀到通過抖音AIGC白名單認(rèn)證

更多請點擊: https://intelliparadigm.com 第一章:AI數(shù)字人口播訓(xùn)練全周期概覽 AI數(shù)字人口播訓(xùn)練是一項融合語音合成、表情驅(qū)動、語義理解與多模態(tài)對齊的系統(tǒng)性工程,其全周期涵蓋數(shù)據(jù)準(zhǔn)備、模型微調(diào)、驅(qū)動策略設(shè)計、實時渲染優(yōu)化及效果評估五…

2026/7/29 4:26:03 閱讀更多
嵌入式設(shè)備與云端安全連接方案及優(yōu)化技巧

嵌入式設(shè)備與云端安全連接方案及優(yōu)化技巧

1. 項目背景與硬件選型解析當(dāng)我們需要在嵌入式設(shè)備與云端建立安全連接時,硬件平臺的選擇直接影響著整個系統(tǒng)的性能和可靠性。這個項目中選用的A5000顯卡和TM4C123GH6PZ微控制器組合,恰好覆蓋了從邊緣計算到云端協(xié)同的全鏈路需求。NVIDIA RTX A5000作為專…

2026/7/29 4:16:02 閱讀更多
智能Bot產(chǎn)品核心價值定位與實戰(zhàn)框架

智能Bot產(chǎn)品核心價值定位與實戰(zhàn)框架

1. Clawdbot的啟示:智能Bot產(chǎn)品的核心價值定位第一次接觸Clawdbot時,最讓我驚訝的是它解決實際業(yè)務(wù)痛點的精準(zhǔn)度。這個智能Bot沒有堆砌花哨的AI功能,而是聚焦于企業(yè)決策層的核心需求——通過自動化數(shù)據(jù)抓取和智能分析,將分散在各系…

2026/7/29 5:26:04 閱讀更多
從零基礎(chǔ)到電網(wǎng)安全運維項目經(jīng)理:我的逆襲之路(收藏版)

從零基礎(chǔ)到電網(wǎng)安全運維項目經(jīng)理:我的逆襲之路(收藏版)

從零基礎(chǔ)到電網(wǎng)安全運維項目經(jīng)理:我的逆襲之路(收藏版) 作者分享了自己從能源動力工程專業(yè)轉(zhuǎn)向網(wǎng)絡(luò)安全,并在1-2年內(nèi)成功進(jìn)入電網(wǎng)行業(yè)擔(dān)任項目經(jīng)理的經(jīng)歷。文章詳細(xì)描述了作者如何通過興趣驅(qū)動自學(xué)網(wǎng)絡(luò)安全知識,并在金…

2026/7/29 5:26:04 閱讀更多
Qt圖像查看器開發(fā):實現(xiàn)大圖加載與實時像素RGB值顯示

Qt圖像查看器開發(fā):實現(xiàn)大圖加載與實時像素RGB值顯示

1. 項目概述與核心價值最近在做一個圖像處理相關(guān)的Qt項目,調(diào)試時經(jīng)常需要精確查看圖片某個點的RGB值。雖然Qt Creator自帶的調(diào)試器功能強大,但對于圖像數(shù)據(jù)這種二維數(shù)組的直觀查看,總感覺差了點意思。用過Visual Studio的朋友可能對ImageWatc…

2026/7/29 5:26:04 閱讀更多
Mac連接HP LaserJet P1108打印機

Mac連接HP LaserJet P1108打印機

本人使用Mac Air M4,連接1108打印機進(jìn)行打印,已成功。 連接教程微信公眾號。 M1芯片版Mac無法連接打印機怎么辦?

2026/7/29 5:26:04 閱讀更多
Fastapi前端搭建

Fastapi前端搭建

1. 配置 import { defineConfig } from vite import vue from vitejs/plugin-vue import { resolve } from pathexport default defineConfig({plugins: [vue()],resolve: {alias: {: resolve(__dirname, src)}},server: {proxy: {/api: {target: http://127.0.0.1:8000,chang…

2026/7/29 5:26:04 閱讀更多
STM32與A5000安全芯片的物聯(lián)網(wǎng)設(shè)備開發(fā)實踐

STM32與A5000安全芯片的物聯(lián)網(wǎng)設(shè)備開發(fā)實踐

1. 硬件選型與安全架構(gòu)設(shè)計在物聯(lián)網(wǎng)設(shè)備開發(fā)中,選擇STM32F100ZE作為主控芯片搭配A5000安全芯片的方案,主要基于以下考量:STM32F100ZE作為Cortex-M3內(nèi)核微控制器,具有以下關(guān)鍵特性:72MHz主頻和16KB SRAM,滿足…

2026/7/29 5:16:04 閱讀更多
面試官大笑:“一個任務(wù)拆給 5 個 Subagent 并行跑,不比 1 個快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個任務(wù)拆給 5 個 Subagent 并行跑,不比 1 個快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個月,我在重構(gòu) AlgoMooc 網(wǎng)站過程中,發(fā)現(xiàn)一個問題:在 Claude Code 里把一個任務(wù)拆給 5 個 Subagent 并行跑,結(jié)果可能比 1 個 agent 從頭干到尾還慢? 大多數(shù)人的第一反應(yīng)是反過來的:活是并行干的&#…

2026/7/29 0:15:24 閱讀更多
# 鴻蒙 HarmonyOS 應(yīng)用開發(fā)實戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號與動畫渲染精講

# 鴻蒙 HarmonyOS 應(yīng)用開發(fā)實戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號與動畫渲染精講

一、應(yīng)用概述 骰子(Dice Roller) 是一款經(jīng)典的休閑娛樂應(yīng)用,模擬了真實擲骰子的過程。應(yīng)用投擲兩個骰子(六面標(biāo)準(zhǔn)骰),使用 Unicode 骰面符號直觀展示每個骰子的點數(shù),并伴有快速滾動的動畫效果?!?/p>

2026/7/29 0:15:24 閱讀更多