邏輯回歸之參數選擇:從理論到實踐

一、邏輯回歸概述

邏輯回歸雖然名字中帶有“回歸”,但它是一種用于處理二分類或多分類問題的算法。其核心思想是通過構建一個線性模型,將輸入特征進行線性組合,再利用邏輯函數(如Sigmoid函數)將線性組合的結果映射到0到1之間的概率值,以此來判斷樣本屬于某一類別的可能性。例如,在信用卡欺詐檢測中,我們可以根據交易金額、時間等特征,預測該筆交易是否為欺詐行為。

二、案例背景與數據處理

在上述代碼中,使用了信用卡交易數據集creditcard.csv。在進行邏輯回歸建模之前,數據預處理是必不可少的步驟。

  1. 數據標準化:對Amount列進行Z標準化,即通過StandardScaler將數據轉換為均值為0,標準差為1的標準正態分布。這一步驟可以消除不同特征之間量綱的影響,加速模型的收斂速度。代碼如下:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
a = data[['Amount']]
data['Amount'] = scaler.fit_transform(data[['Amount']])
  1. 特征選擇與數據劃分:刪除對模型影響較小的Time列,并將數據集劃分為訓練集和測試集。這里采用train_test_split函數,將30%的數據作為測試集,70%的數據作為訓練集,同時設置random_state固定隨機種子,以保證實驗結果的可重復性。
from sklearn.model_selection import train_test_split
X = data.drop('Class',axis=1)
y = data.Class
x_train,x_test,y_train,y_test =\
train_test_split(X,y,test_size = 0.3,random_state = 0)

三、邏輯回歸關鍵參數介紹

在邏輯回歸模型LogisticRegression中,有幾個關鍵參數對模型性能有著重要影響。

  1. C參數:C是正則化強度的倒數,它控制模型對訓練數據的擬合程度。C值越大,正則化強度越弱,模型越傾向于擬合訓練數據,容易出現過擬合現象;C值越小,正則化強度越強,模型的泛化能力越強,但可能會導致欠擬合。在實際應用中,需要通過合適的方法來選擇最優的C值。
  2. penalty參數:該參數用于指定正則化的類型,常見的有'l1''l2''l1'正則化會使部分系數變為0,從而起到特征選擇的作用;'l2'正則化則是對所有系數進行約束,使系數更加平滑。在上述代碼中,使用的是'l2'正則化。
  3. solver參數:該參數用于指定求解器的類型,不同的求解器適用于不同的數據規模和問題特點。例如,'lbfgs'適用于大多數情況,尤其是數據量較大時;'liblinear'則適用于小數據集。

四、參數選擇方法——交叉驗證

為了選擇最優的C參數,代碼中采用了交叉驗證的方法。交叉驗證是一種評估模型性能和選擇參數的有效技術,它將訓練數據劃分為多個子集,通過多次訓練和驗證,得到模型在不同數據子集上的性能指標,最終取平均值作為模型的評估結果。

  1. 具體實現:在代碼中,定義了一個c_param_range列表,包含了多個候選的C值。然后,通過循環將每個C值傳入LogisticRegression模型,并使用cross_val_score函數進行8折交叉驗證,計算模型的召回率(scoring ='recall')。召回率是衡量模型在正樣本識別能力的重要指標,在信用卡欺詐檢測中,較高的召回率意味著能夠盡可能多地識別出欺詐交易。
scores = []
c_param_range =[0.01,0.1,1,10,100]
for i in c_param_range:lr = LogisticRegression(C = i, penalty='l2', solver='lbfgs', max_iter=1000)score = cross_val_score(lr, x_train, y_train, cv = 8, scoring ='recall')score_mean = sum(score) / len(score)scores.append(score_mean)print(score_mean)
  1. 選擇最優參數:通過np.argmax(scores)找到scores列表中最大值對應的索引,從而確定最優的C參數。使用最優C參數重新構建邏輯回歸模型,以期望在測試集上獲得更好的性能。
best_c = c_param_range[np.argmax(scores)]
lr = LogisticRegression(C = best_c,penalty = 'l2',max_iter = 1000)
lr.fit(x_train, y_train)

五、模型評估與結果分析

為了評估模型的性能,代碼中使用了混淆矩陣和分類報告。

  1. 混淆矩陣:通過cm_plot函數繪制混淆矩陣,它直觀地展示了模型在不同類別上的預測情況。例如,矩陣的對角線元素表示預測正確的樣本數量,非對角線元素表示預測錯誤的樣本數量。通過分析混淆矩陣,可以深入了解模型的錯誤類型,為進一步優化模型提供依據。
train_predicted =lr.predict(x_train)
print(metrics.classification_report(y_train, train_predicted))
cm_plot(y_train,train_predicted).show()test_predicted = lr.predict(x_test)
print(metrics.classification_report(y_test, test_predicted))
cm_plot(y_test,test_predicted).show()
  1. 分類報告classification_report函數生成的分類報告提供了精確率、召回率和F1值等關鍵指標,這些指標從不同角度評估了模型的性能。通過對比訓練集和測試集上的分類報告,可以判斷模型是否存在過擬合現象。

六、運行結果

在這里插入圖片描述

七、總結與展望

邏輯回歸的參數選擇直接影響模型的性能和泛化能力。通過交叉驗證等方法,可以有效地找到最優參數,提高模型的預測準確性。在實際應用中,還可以結合更多的參數調整和模型優化技巧,如特征工程、調整正則化類型等,進一步提升邏輯回歸模型的效果。隨著機器學習技術的不斷發展,邏輯回歸也在與其他算法融合,發揮著更大的作用。未來,我們可以探索更多的參數選擇方法和模型優化策略,以適應更加復雜和多樣化的應用場景。

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

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

相關文章

綜合案例建模(1)

文章目錄 滾花手扭螺絲機箱封蓋螺絲螺絲孔錐形墊片 滾花手扭螺絲 前視基準面畫草圖,旋轉生成主體 倒角0.5 頂面,草圖轉換實體引用,去復制邊線 生成螺旋線路徑 頂面繪制草圖 上一步畫的草圖沿螺旋線掃描切除 鏡像掃描特征 陣列鏡像掃描特征 創…

SQL語句練習 自學SQL網 多表查詢

目錄 Day 6 用JOINs進行多表聯合查詢 Day 7 外連接 OUTER JOINs Day 8 外連接 特殊關鍵字 NULLs Day 6 用JOINs進行多表聯合查詢 SELECT * FROM Boxoffice INNER JOIN movies ON movies.idboxoffice.Movie_id;SELECT * FROM Boxoffice INNER JOIN moviesON movies.idboxoffi…

游戲引擎學習第247天:簡化DEBUG_VALUE

歡迎。關于紋理傳輸的詳細情況。 上周我們剛剛完成了紋理下載的相關工作,但實際上并沒有完全解決這個問題。問題的核心是,當前關于紋理下載的正確方式仍然存在較大的不確定性。盡管我們在進行紋理下載的工作時已有一定進展,但依舊有不少模糊…

python將字符串轉成二進制數組

python將字符串轉成二進制數組 功能概述: save_binary_to_json() 函數:將字符串轉換為二進制數據(字節的整數表示),并保存到JSON文件中。 load_binary_from_json() 函數:從JSON文件中讀取二進制數據并還原…

【springboot知識】配置方式實現SpringCloudGateway相關功能

配置方式實現SpringCloudGateway相關功能 Spring Cloud Gateway 核心功能與實戰實現指南一、核心功能架構二、六大核心功能實現1. 動態路由配置2. 斷言(Predicate)配置3. 過濾器(Filter)配置4. 負載均衡配置5. 熔斷降級配置6. 限流配置 三、高級配置技巧1. 跨域配置2. 重試機制…

Windows 10 環境二進制方式安裝 MySQL 8.0.41

文章目錄 初始化數據庫配置文件注冊成服務啟停服務鏈接服務器登錄之后重置密碼卸載 初始化數據庫 D:\MySQL\MySQL8.0.41\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin\mysqld -I --console --basedirD:\MySQL\MySQL8.0.41\mysql-8.0.41-winx64\mysql-8.0.41-winx64 --datadi…

流式通信技術對比:SSE vs WebSocket 應用場景與最佳實踐

在構建動態、實時交互的現代 Web 應用時,實時通信能力至關重要。Server-Sent Events(SSE) 和 WebSocket 是當前最主流的兩種技術方案,它們都支持服務器主動向客戶端推送數據,但在通信模式、應用場景和實現復雜度上存在…

復雜度和順序表(雙指針方法)

目錄 目錄 目錄 前言: 一、時間復雜度和空間復雜度 1.1概念 1.2規則 二、順序表 2.1靜態順序表 2.2動態順序表 三、雙指針法 四、總結 前言: 時間復雜度和空間復雜度是用于判斷算法好壞的指標,程序性能的核心指標。時間復雜度主要衡…

flutter 專題 六十四 在原生項目中集成Flutter

概述 使用Flutter從零開始開發App是一件輕松愜意的事情,但對于一些成熟的產品來說,完全摒棄原有App的歷史沉淀,全面轉向Flutter是不現實的。因此使用Flutter去統一Android、iOS技術棧,把它作為已有原生App的擴展能力,…

Java高階程序員學習計劃(詳細到天,需有一定Java基礎)

??致敬讀者 ??感謝閱讀??笑口常開??生日快樂?早點睡覺??博主相關 ??博主信息??博客首頁??專欄推薦??活動信息文章目錄 Java高階程序員學習計劃(詳細到天,需有一定Java基礎)第一階段(30天)Java基礎:Java生態工具鏈:設計模式與編碼規范:第二階段(15天…

JS自動化獲取網站信息開發說明

一、自動獲取信息的必要性 1. 提高效率與節省時間 批量處理:自動化可以快速抓取大量數據,比人工手動操作快得多。 24/7 運行:自動化工具可以全天候工作,不受時間限制。 減少重復勞動:避免人工反復執行相同的任務&am…

Android Kotlin 依賴注入全解:Koin appModule 配置與多 ViewModel 數據共享實戰指南

一、基礎配置與概念 1. 什么是 appModule appModule 是 Koin 依賴注入框架中的核心配置模塊,用于集中管理應用中的所有依賴項。它本質上是一個 Koin 模塊(org.koin.core.module.Module),通過 DSL 方式聲明各種組件的創建方式和依…

學習記錄:DAY21

我的開發日志:類路徑掃描、DI 容器與動態代理 前言 我失憶了,完全不記得自己早上干了什么。 日程 早上 10 點左右開始,學了一早上,主要是類路徑掃描相關的調試。 晚上 8 點了,真不能再摸🐟了。 學習記錄 計…

【Agent】MCP協議 | 用高德MCP Server制作旅游攻略

note MCP (Model Context Protocol) 代表了 AI 與外部工具和數據交互的標準建立。MCP 的本質:它是一個統一的協議標準,使 AI 模型能夠以一致的方式連接各種數據源和工具,類似于 AI 世界的"USB-C"接口。 它能夠在 LLM/AI Agent 與外…

使用 Spring Data Redis 實現 Redis 數據存儲詳解

使用 Spring Data Redis 實現 Redis 數據存儲詳解 Spring Data Redis 是 Spring 生態中操作 Redis 的核心模塊,它封裝了 Redis 客戶端的底層細節(如 Jedis 或 Lettuce),提供了統一的 API 來操作 Redis 的數據結構。以下是詳細實現…

Qt5與現代OpenGL學習(四)X軸方向旋轉60度

把上面兩張圖像放到D盤1文件夾內&#xff1a; shader.h #ifndef SHADER_H #define SHADER_H#include <QDebug> #include <QOpenGLShader> #include <QOpenGLShaderProgram> #include <QString>class Shader { public:Shader(const QString& verte…

【Machine Learning Q and AI 讀書筆記】- 02 自監督學習

Machine Learning Q and AI 中文譯名 大模型技術30講&#xff0c;主要總結了大模型相關的技術要點&#xff0c;結合學術和工程化&#xff0c;對LLM從業者來說&#xff0c;是一份非常好的學習實踐技術地圖. 本文是Machine Learning Q and AI 讀書筆記的第2篇&#xff0c;對應原…

using var connection = connectionFactory.CreateConnection(); using var 是什么意思

在 .NET 中&#xff0c;??垃圾回收&#xff08;Garbage Collection, GC&#xff09;?? 確實是自動管理內存的機制&#xff0c;但它 ??僅適用于托管資源&#xff08;Managed Resources&#xff09;??&#xff08;如類實例、數組等&#xff09;。然而&#xff0c;對于 ?…

Multicore-TSNE

文章目錄 TSNE使用scikit-learn庫使用Multicore-TSNE庫安裝方法基本使用方法采用不同的距離度量 其他資料 TSNE t-Distributed Stochastic Neighbor Embedding (t-SNE) 是一種高維數據的降維方法&#xff0c;由Laurens van der Maaten和Geoffrey Hinton于2008年提出&#xff0…

SI5338-EVB Usage Guide(LVPECL、LVDS、HCSL、CMOS、SSTL、HSTL)

目錄 1. 簡介 1.1 EVB 介紹 1.2 Si5338 Block Diagram 2. EVB 詳解 2.1 實物圖 2.2 基本配置 2.2.1 Universal Pin 2.2.2 IIC I/F 2.2.3 Input Clocks 2.2.4 Output Frequencies 2.2.5 Output Driver 2.2.6 Freq and Phase Offset 2.2.7 Spread Spectrum 2.2.8 快…