逻辑回归之参数选择:从理论到实践

一、逻辑回归概述

逻辑回归虽然名字中带有“回归”,但它是一种用于处理二分类或多分类问题的算法。其核心思想是通过构建一个线性模型,将输入特征进行线性组合,再利用逻辑函数(如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.mzph.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 快…