學(xué)習(xí)日記 7.28
在機器學(xué)習(xí)的學(xué)習(xí)之路上線性回歸和邏輯回歸是兩塊重要的基石。今天我們將通過兩個實戰(zhàn)案例從理論到代碼全面掌握這兩種算法的應(yīng)用案例一多元線性回歸—— 根據(jù)體重和年齡預(yù)測血壓收縮壓案例二邏輯回歸—— 信用卡欺詐交易檢測Kaggle 經(jīng)典數(shù)據(jù)集。一、多元線性回歸1.1 什么是多元線性回歸簡單線性回歸使用一個自變量來預(yù)測因變量而多元線性回歸則使用兩個或以上的自變量。其數(shù)學(xué)表達式為y β? β?x? β?x? ... β?x? ε其中y是目標變量因變量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)性 —— 了解各特征與目標變量之間的關(guān)系 corr data[[體重, 年齡, 血壓收縮]].corr() print( 相關(guān)性矩陣 ) print(corr) 3. 創(chuàng)建模型 lr_model LinearRegression() 4. 準備特征和目標變量 x data[[體重, 年齡]] # 特征矩陣 y data[血壓收縮] # 目標變量 5. 訓(xùn)練模型 lr_model.fit(x, y) 6. 模型評估 —— R2 分數(shù) score lr_model.score(x, y) print(f\n模型 R2 分數(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 分數(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弱負相關(guān)—— 在這組數(shù)據(jù)中年齡與血壓呈現(xiàn)輕微負相關(guān)體重 ? 年齡-0.700中等負相關(guān)—— 數(shù)據(jù)中體重和年齡存在一定的負相關(guān)關(guān)系關(guān)鍵發(fā)現(xiàn)體重的相關(guān)系數(shù)高達 0.906說明體重是影響收縮壓的核心因素。而年齡在本數(shù)據(jù)集中與收縮壓呈弱負相關(guān)-0.383這可能與樣本特性有關(guān)。2. R2 分數(shù)分析模型 R2 分數(shù)為0.9461這意味著模型能夠解釋94.61%的血壓收縮壓變化。擬合效果非常好說明體重和年齡這兩個特征對血壓有很強的解釋力。不過需要注意這里 R2 是在訓(xùn)練集上計算的沒有做訓(xùn)練集/測試集劃分14 條數(shù)據(jù)太少。在實際項目中應(yīng)該劃分數(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 → 負類0正常交易。2.2 數(shù)據(jù)集介紹本案例使用的是Kaggle 信用卡欺詐檢測數(shù)據(jù)集包含約 28.5 萬條交易記錄。字段說明Time交易時間秒V1 ~ V28PCA 降維后的特征脫敏處理Amount交易金額Class標簽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 標簽??梢钥吹?Amount 列的數(shù)值149.62, 2.69, 378.66...差異很大后面需要進行標準化處理。Step 2數(shù)據(jù)預(yù)處理 —— Z-score 標準化from sklearn.preprocessing import StandardScaler scaler StandardScaler() data[Amount] scaler.fit_transform(data[[Amount]]) data data.drop([Time], axis1)為什么要對 Amount 做標準化Amount列的數(shù)值范圍0 ~ 25691遠大于 V1~V28經(jīng)過 PCA 后基本在 [-5, 5] 范圍內(nèi)。如果不進行標準化模型會錯誤地認為 Amount 比其他特征重要得多從而影響模型效果。Z-score 標準化公式z?? (x?? - x??) / s?x??該特征的均值數(shù)學(xué)期望s?該特征的標準差標準化后數(shù)據(jù)均值為 0標準差為 1。這里我們把Time列刪除了 —— 交易發(fā)生的絕對時間與欺詐行為之間通常沒有直接的線性關(guān)系保留它反而可能引入噪聲。Step 3數(shù)據(jù)可視化 —— 查看正負樣本分布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(正負樣本分布) 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 # 標簽列 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正則化非常強 → 防止模型過擬合。邏輯回歸默認使用L2 正則化嶺回歸。這里選較小的 C 值是因為數(shù)據(jù)極度不平衡需要用強正則化來約束模型。Step 6模型評估test_predicted lr.predict(X_test_w) # 對測試集進行預(yù)測 result lr.score(X_test_w, y_test_w) # 計算準確率 print(f模型準確率: {result})輸出結(jié)果模型準確率: 0.9990168884519505運行結(jié)果深度解讀準確率高達99.90%這看起來非常優(yōu)秀但這里有一個重要陷阱準確率 99.90% 并不意味著模型真的很好還記得我們之前統(tǒng)計的類別分布嗎欺詐交易只占 0.17%。如果我們寫一個傻瓜模型——把所有交易都預(yù)測為正常交易# 傻瓜策略全部預(yù)測為 0 dummy_accuracy (y_test_w 0).sum() / len(y_test_w) print(f全部預(yù)測為正常的準確率: {dummy_accuracy}) # 輸出約: 0.9983 (99.83%)這個什么都不做的策略也能達到99.83%的準確率所以核心結(jié)論在不平衡數(shù)據(jù)集中準確率Accuracy不是一個可靠的評估指標。我們需要關(guān)注的是精確率Precision被預(yù)測為欺詐的交易中有多少是真正的欺詐召回率Recall真正的欺詐交易中有多少被模型檢測出來了F1 分數(shù)精確率和召回率的調(diào)和平均。AUC-ROC模型區(qū)分正負樣本的能力。三、線性回歸 vs 邏輯回歸對比總結(jié)對比維度線性回歸邏輯回歸任務(wù)類型回歸預(yù)測連續(xù)值分類預(yù)測離散類別輸出范圍(-∞, ∞)[0, 1]概率值損失函數(shù)均方誤差MSE交叉熵損失Log Loss激活函數(shù)無線性輸出Sigmoid 函數(shù)評估指標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/準確率0.9461優(yōu)秀0.9990看似優(yōu)秀實則存疑可信度需更多數(shù)據(jù)驗證不能只看準確率4.2 關(guān)鍵R2 0.9461 說明什么體重和年齡共同解釋了 94.61% 的血壓變異。但 14 條數(shù)據(jù)太少模型可能過擬合需要更多樣本驗證。準確率 99.90% 說明什么單獨看模型表現(xiàn)極好。結(jié)合類別分布看幾乎所有樣本都是負類全部預(yù)測為 0也有 99.83%。真相模型的提升僅為 0.07%這點提升來自正確識別了極少數(shù)的欺詐交易。數(shù)據(jù)預(yù)處理的重要性Amount 標準化消除量綱差異避免大數(shù)值特征主導(dǎo)模型Time 刪除去除與目標變量無關(guān)的特征減少噪聲相關(guān)性分析中體重與血壓的相關(guān)性0.906遠超年齡-0.383。五、進階建議針對信用卡欺詐檢測案例可以從以下方向繼續(xù)優(yōu)化處理樣本不平衡設(shè)置class_weightbalanced讓模型自動按類別頻率調(diào)整權(quán)重或用 SMOTE 過采樣random_state42固定隨機種子保證結(jié)果可復(fù)現(xiàn)。更全面的模型評估不平衡數(shù)據(jù)中準確率不可靠應(yīng)關(guān)注精確率、召回率、F1 和 AUC用classification_report和roc_auc_score全面評估。

相關(guān)新聞

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

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

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

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

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

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

2026/7/29 4:16:02 閱讀更多
【AI物流優(yōu)化實戰(zhàn)手冊】:20年物流算法專家親授5大落地場景+3個避坑指南

【AI物流優(yōu)化實戰(zhàn)手冊】:20年物流算法專家親授5大落地場景+3個避坑指南

更多請點擊: https://kaifayun.com 第一章:AI物流優(yōu)化的核心價值與演進脈絡(luò) 人工智能正深度重塑全球供應(yīng)鏈的運行邏輯。在物流領(lǐng)域,AI不再僅是效率提升的輔助工具,而是驅(qū)動網(wǎng)絡(luò)協(xié)同、動態(tài)決策與韌性構(gòu)建的戰(zhàn)略中樞。其核心價值體…

2026/7/29 10:46:25 閱讀更多
REFRAG技術(shù)突破:16倍上下文窗口提升RAG性能

REFRAG技術(shù)突破:16倍上下文窗口提升RAG性能

1. 項目背景:RAG技術(shù)的瓶頸與突破去年在部署企業(yè)級知識庫系統(tǒng)時,我們團隊曾為RAG(Retrieval-Augmented Generation)的上下文窗口限制頭疼不已。傳統(tǒng)方案中,即便使用Llama 2-70B這樣的頂級模型,其4k tokens的…

2026/7/29 10:46:25 閱讀更多
為什么90%的定制音色上線即翻車?深度拆解聲學(xué)對齊誤差超±3.7ms的5重歸因

為什么90%的定制音色上線即翻車?深度拆解聲學(xué)對齊誤差超±3.7ms的5重歸因

更多請點擊: https://kaifayun.com 第一章:為什么90%的定制音色上線即翻車?深度拆解聲學(xué)對齊誤差超3.7ms的5重歸因 聲學(xué)對齊誤差是語音合成系統(tǒng)中最具隱蔽性卻最致命的性能瓶頸。當定制音色在真實業(yè)務(wù)場景中出現(xiàn)“口型不同步”“語調(diào)斷裂”或…

2026/7/29 10:46:25 閱讀更多
SecureCRT 完整使用教程:從下載安裝到SSH連接與串口配置

SecureCRT 完整使用教程:從下載安裝到SSH連接與串口配置

前言 SecureCRT 是 VanDyke Software 開發(fā)的終端仿真器,支持 SSH、Telnet、Serial 等多種協(xié)議,廣泛應(yīng)用于網(wǎng)絡(luò)設(shè)備管理和 Linux 服務(wù)器運維。本文覆蓋從下載安裝到 SSH/串口連接、會話管理、License 激活的完整流程,并附 SecureCRT vs PuTTY…

2026/7/29 10:46:25 閱讀更多
面試官大笑:“一個任務(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)用投擲兩個骰子(六面標準骰),使用 Unicode 骰面符號直觀展示每個骰子的點數(shù),并伴有快速滾動的動畫效果?!?/p>

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