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

相關(guān)新聞

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

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

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

2026/7/29 4:26:03 閱讀更多
極驗(yàn)3代點(diǎn)選驗(yàn)證碼逆向:從抓包到生成加密w參數(shù)的完整實(shí)戰(zhàn)

極驗(yàn)3代點(diǎn)選驗(yàn)證碼逆向:從抓包到生成加密w參數(shù)的完整實(shí)戰(zhàn)

1. 項(xiàng)目概述:為什么我們要啃下極驗(yàn)3代點(diǎn)選這塊硬骨頭?如果你做過(guò)爬蟲(chóng),尤其是需要處理登錄、注冊(cè)或者高頻數(shù)據(jù)抓取,那你一定對(duì)“極驗(yàn)”這個(gè)名字不陌生。它就像一道橫在數(shù)據(jù)洪流前的智能閘門(mén),而其中的點(diǎn)選驗(yàn)證碼&#xf…

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

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

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

2026/7/29 4:16:02 閱讀更多
性?xún)r(jià)比高的重金屬檢測(cè)相關(guān)抗原抗體優(yōu)質(zhì)源頭廠家

性?xún)r(jià)比高的重金屬檢測(cè)相關(guān)抗原抗體優(yōu)質(zhì)源頭廠家

咱搞重金屬檢測(cè)的,找合適的抗原抗體源頭廠家可太重要了。我深耕重金屬檢測(cè)相關(guān)抗原抗體垂類(lèi)5年了,對(duì)這行業(yè)的情況門(mén)兒清。先跟大家嘮嘮這行業(yè)的痛點(diǎn)。對(duì)高校和科研院所來(lái)說(shuō),進(jìn)口的微球、納米材料供貨周期長(zhǎng),物流要是有點(diǎn)波動(dòng)&…

2026/7/29 9:56:24 閱讀更多
無(wú)人機(jī)三維路徑規(guī)劃的NMOPSO算法與MATLAB實(shí)現(xiàn)

無(wú)人機(jī)三維路徑規(guī)劃的NMOPSO算法與MATLAB實(shí)現(xiàn)

1. 項(xiàng)目背景與核心挑戰(zhàn) 城市場(chǎng)景下的無(wú)人機(jī)三維路徑規(guī)劃是當(dāng)前智能交通和物流配送領(lǐng)域的前沿課題。隨著2025年城市空中交通(UAM)概念的逐步落地,無(wú)人機(jī)需要在復(fù)雜的建筑群環(huán)境中實(shí)現(xiàn)安全、高效的自主飛行。這個(gè)過(guò)程中面臨三個(gè)核心挑戰(zhàn)&#x…

2026/7/29 9:56:24 閱讀更多
安卓手機(jī)粵語(yǔ)錄音轉(zhuǎn)文字怎么實(shí)現(xiàn)?4款實(shí)用軟件功能對(duì)比與使用指南

安卓手機(jī)粵語(yǔ)錄音轉(zhuǎn)文字怎么實(shí)現(xiàn)?4款實(shí)用軟件功能對(duì)比與使用指南

在大灣區(qū)工作或與粵語(yǔ)區(qū)客戶(hù)溝通的職場(chǎng)人,經(jīng)常遇到這樣的困擾:會(huì)議全程用粵語(yǔ)交流,錄音后手動(dòng)整理不僅耗時(shí)耗力,還容易因?yàn)榉窖岳斫馄顚?dǎo)致信息遺漏。普通的錄音轉(zhuǎn)文字軟件對(duì)普通話識(shí)別效果不錯(cuò),但一遇到粵語(yǔ)就頻頻出…

2026/7/29 9:56:24 閱讀更多
基于 openEuler+MySQL8.0 + 騰訊云 TokenHub 大模型搭建電商 NL2SQL 智能調(diào)優(yōu)工具

基于 openEuler+MySQL8.0 + 騰訊云 TokenHub 大模型搭建電商 NL2SQL 智能調(diào)優(yōu)工具

一、項(xiàng)目實(shí)施全流程 1.1openEuler 系統(tǒng)初始化配置 1.1.1 系統(tǒng)安全與網(wǎng)絡(luò)優(yōu)化 剛裝好 openEuler 系統(tǒng),防火墻、SELinux 會(huì)攔截端口訪問(wèn),時(shí)間同步錯(cuò)亂,先做系統(tǒng)基礎(chǔ)優(yōu)化。 1.1.2 源碼編譯 Python3.11.9 1.下載源碼包上傳至/usr/local/src&…

2026/7/29 9:56:24 閱讀更多
共筑國(guó)產(chǎn) FPGA 生態(tài)!ALINX 攜車(chē)載視頻解決方案亮相 2026 紫光同創(chuàng)開(kāi)發(fā)者大會(huì)

共筑國(guó)產(chǎn) FPGA 生態(tài)!ALINX 攜車(chē)載視頻解決方案亮相 2026 紫光同創(chuàng)開(kāi)發(fā)者大會(huì)

以“算力重構(gòu)、智創(chuàng)無(wú)界”為主題的“2026紫光同創(chuàng)開(kāi)發(fā)者大會(huì)”深圳站與成都站圓滿落幕。本次大會(huì)匯聚了來(lái)自通信網(wǎng)絡(luò)、工業(yè)控制、汽車(chē)電子、數(shù)據(jù)中心、邊緣AI、測(cè)試測(cè)量等領(lǐng)域的 300 余名工程師、行業(yè)伙伴與生態(tài)開(kāi)發(fā)者,圍繞國(guó)產(chǎn) FPGA 技術(shù)創(chuàng)新、AI 推理系統(tǒng)方案、工…

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

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

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

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

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

一、應(yīng)用概述 骰子(Dice Roller) 是一款經(jīng)典的休閑娛樂(lè)應(yīng)用,模擬了真實(shí)擲骰子的過(guò)程。應(yīng)用投擲兩個(gè)骰子(六面標(biāo)準(zhǔn)骰),使用 Unicode 骰面符號(hào)直觀展示每個(gè)骰子的點(diǎn)數(shù),并伴有快速滾動(dòng)的動(dòng)畫(huà)效果。…

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