逻辑回归的应用

 一·参数

逻辑回归参数及多分类策略等完整解析

  1. LogisticRegression 初始参数声明
    LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

  2. 核心参数与概念详细说明

    • Penalty:正则化方式,含 L1、L2 ;newton - cg、sag、lbfgs 仅支持 L2 ,L1 假设参数服从拉普拉斯分布,L2 假设服从高斯分布,加约束理论增强泛化能力防过拟合 。
    • Dual:对偶方法,用于线性多核(liblinear)的 L2 惩罚项;样本数>特征数时,通常设 False 。
    • Tol:迭代停止精度(容许停止标准 ),float 型,默认 1e - 4 。
    • C:正则化强度,为正则化系数 λ 的倒数,数值越小正则化越强(类 SVM ),默认 1.0 (正浮点型数 )。
    • fit_intercept:控制是否加截距项到决策函数,默认 True(加截距项 b )。
    • intercept_scaling:仅正则化项为 “liblinear” 且 fit_intercept=True 时生效,float 型,默认 1 。
    • class_weight:分类权重设置,支持字典、'balanced' ;默认 None(不考虑权重 ),样本失衡时可用,“balanced” 按样本量算权重(样本多则权重低 ),也可自定义(如 {0:0.9,1:0.1} ),解决误分类代价高、样本失衡问题 。
    • random_state:伪随机数种子,用于数据洗牌,仅 sag、liblinear 正则化算法生效 。
    • Solver:优化算法,可选 {‘newton - cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’} ,默认 liblinear :
      • liblinear:坐标轴下降法,适小数据集;多分类用 OvR 策略,仅支持 L2 正则化(newton - cg、sag、lbfgs 同 ),saga 支持 L1/L2 ;
      • newton - cg:牛顿法,二阶泰勒展开减迭代轮数,需算 Hessian 矩阵逆(复杂度高 );
      • lbfgs:拟牛顿法,近似 Hessian 矩阵逆,解决牛顿法求逆难题;
      • Sag:随机平均梯度下降,一阶优化,用部分样本算梯度,适大数据集(>10 万 ),不支持 L1 ;
      • Saga:线性收敛随机优化算法变种,通吃 L1/L2 。
    • max_iter:算法最大迭代次数,int 型,默认 100 ;仅 newton - cg、sag、lbfgs 正则化算法生效 。
    • multi_class:分类策略,可选 ovr(one - vs - rest )、multinomial(many - vs - many ),默认 ovr :
      • OvR:多元转二元处理,第 K 类样本为正例,其余为负例做二元回归,遍历类别构建模型;相对简单,分类效果略差(部分场景有优势 );选 ovr 时,liblinear、newton - cg、lbfgs、sag 4 种优化算法都可用 。
      • MvM:以 OvO(one - vs - one )为例,T 类样本需选两类(T1、T2 ),T1 正例、T2 负例做二元回归,共需 T (T - 1)/2 次分类;分类精确但速度慢;选 multinomial 时,仅 newton - cg、lbfgs、sag 优化算法可用 。
    • verbose:日志冗长度,int 型,默认 0(不输出训练过程 );1 偶尔输出结果,>1 则每个子模型都输出 。
    • warm_start:热启动参数,bool 型,默认 False ;为 True 时,下次训练以追加树形式(用上一次调用初始化 )。
    • n_jobs:并行数,int 型,默认 1(用 CPU 1 个内核 );2 则用 2 个内核,-1 用所有 CPU 内核 。
  3. 多分类策略与算法关联补充
    OvR 相对简单但效果略差(部分样本分布场景有优势 ),MvM 分类精确但速度慢;选 ovr 时,4 种优化算法(liblinear、newton - cg、lbfgs、sag )均可搭配;选 multinomial 时,仅 newton - cg、lbfgs、sag 可用 。

二·代码

import numpy as np
# numpy是专门用于处理矩阵数据# 读取数据集
data = np.loadtxt('datingTestSet2.txt')# 数据预处理(按需启用,若不需要筛选可注释)
# data_1 = data[data[:, -1] == 1]  # 找出类别为1的数据
# data_2 = data[data[:, -1] == 2]  # 找出类别为2的数据
# data_3 = data[data[:, -1] == 3]  # 找出类别为3的数据
# data_new = np.concatenate((data_1, data_2), axis=0)  # 拼接类别1和2的数据
# X = data_new[:, :-1]  # 获取特征(不含最后一列标签)
# y = data_new[:, -1]   # 获取标签(最后一列)# 若无需筛选类别,直接用全部数据做特征和标签拆分
X = data[:, :-1]  # 获取所有数据的特征(不含最后一列标签)
y = data[:, -1]   # 获取所有数据的标签(最后一列)"""建立模型"""
from sklearn.model_selection import train_test_split
# 专门用来对数据集进行切分的函数# 拆分数据集为训练集和测试集
x_train_w, x_test_w, y_train_w, y_test_w = train_test_split(X, y, test_size=0.3, random_state=1000
)from sklearn.linear_model import LogisticRegression
# 逻辑回归的类,所有的算法都封装再这个类# 创建逻辑回归模型实例
lr = LogisticRegression(C=0.01)
# 训练模型(用训练集特征和标签)
lr.fit(x_train_w, y_train_w)# 测试集预测
test_predicted = lr.predict(x_test_w)
# 计算模型在测试集上的准确率
result = lr.score(x_test_w, y_test_w)
print("模型在测试集上的准确率:", result)

抽取30%测试集剩下的70%是训练集

x_train_w, x_test_w, y_train_w, y_test_w = train_test_split

 训练级的 x。测试机 x 训练机的 y,测试机的 y

lr中的coef

建立三条数据线,三条方程

三·关于银行的案例下篇文章会讲

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
from pylab import mpl
from sklearn import metricsdata = pd.read_csv(r"./creditcard.csv")scaler = StandardScaler()
data['Amount'] = scaler.fit_transform(data[['Amount']])
data = data.drop(['Time'], axis=1)X_whole = data.drop('Class', axis=1)
y_whole = data['Class']
x_train_w, x_test_w, y_train_w, y_test_w = train_test_split(X_whole, y_whole, test_size=0.3, random_state=1000
)lr = LogisticRegression(C=0.01)
lr.fit(x_train_w, y_train_w)
test_predicted = lr.predict(x_test_w)
result = lr.score(x_test_w, y_test_w)print(metrics.classification_report(y_test_w, test_predicted))mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']
mpl.rcParams['axes.unicode_minus'] = False
labels_count = pd.value_counts(data['Class'])
labels_count.plot(kind='bar')
plt.title("正负例样本数")
plt.xlabel("类别")
plt.ylabel("频数")
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94120.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言(长期更新)第7讲:VS实用调试技巧

C语言(长期更新) 第7讲 VS实用调试技巧 跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。 目录 C语言(长期更新) 第7讲 …

CONTRASTIVE-KAN:一种用于稀缺标记数据的网络安全半监督入侵检测框架

研究背景与挑战​ ​工业环境需求​: 第四次工业革命中,物联网(IoT)和工业物联网(IIoT)的普及使网络安全成为关键挑战。 入侵检测系统需实时性高,尤其对关键基础设施(如燃气管道)的快速攻击检测至关重要。 ​核心问题​: ​标签数据稀缺​:工业系统多数时间处于正常…

综合:单臂路由+三层交换技术+telnet配置+DHCP

技术考核1 实验拓扑:实验需求 1.按照图示配置IP地址设备名 2.在SW1和SW2之间配置链路聚合增加链路带宽,提高可靠性 3.PC5和PC6属于VLAN10, PC7和PC8属于VLAN20 4.SW1和SW2属于二层交换机,SW3为三层交换机(VLAN100用于对…

工业火焰识别漏报率↓78%!陌讯多模态融合算法实战解析

原创声明:本文技术方案解析基于陌讯技术白皮书2025版 标签:#陌讯视觉算法 #火焰识别优化 #工业安全监控 #边缘计算优化一、行业痛点:工业火灾监控的漏检危机据《2025工业安全白皮书》统计,化工场景传统火焰识别系统漏报率高达35%&…

C++引用:高效安全的别名机制详解

目录 一、引用的概念 二、引用的特性 1、定义时必须初始化 2、一个变量可以有多个引用 3、引用一旦绑定实体就不能更改 三、const引用(常引用) 1、const引用的基本特性 2、临时对象与const引用 3、临时对象的特性 4、const 引用作为函数形参 …

大语言模型API付费?

下面是目前主流 大语言模型 API 的付费情况总览: 🧠 一、主要大语言模型 API:是否付费对比 提供方模型是否免费限制 / 说明OpenAIGPT-3.5 / GPT-4 / GPT-4o❌ 付费为主有免费额度(如 ChatGPT 免费版),API …

巧用Wisdom SSH:容器化运维与传统运维的抉择

巧用Wisdom SSH:容器化运维与传统运维的抉择 在当下的技术领域,容器化运维与传统运维是运维人员面临的两大主要方向,对于从业者来说,如何抉择至关重要,而Wisdom SSH在其中能发挥显著作用。 传统运维:基石…

API征服者:Python抓取星链卫星实时轨迹

API征服者:Python抓取星链卫星实时轨迹从基础调用到工业级卫星追踪系统实战指南一、太空数据时代:星链卫星的全球覆盖​​星链卫星网络规模​​:已发射卫星数量:4,000目标卫星总数:42,000轨道高度:340km - …

《深潜React列表渲染:调和算法与虚拟DOM Diff的优化深解》

当用户在内容平台无限滑动,或是在管理系统中处理成百上千条数据时,每一次无卡顿的交互,都是调和算法与虚拟DOM Diff机制协同工作的成果。理解这两者的底层逻辑,不仅是性能优化的钥匙,更是从“使用框架”到“理解框架”…

自动化与配置管理工具 ——Ansible

一、Ansible 概述1.1 核心特性Ansible 是一款开源的自动化运维工具,采用无代理(Agentless)架构,通过 SSH 协议实现对远程节点的管理。其核心特性包括:无代理架构:被管理节点无需安装代理软件,降…

Effective C++ 条款18:让接口容易被正确使用,不易被误用

Effective C 条款18:让接口容易被正确使用,不易被误用核心思想:设计接口时,应使正确使用方式直观自然,同时通过类型系统、行为约束等手段主动预防常见错误,减少用户犯错的可能性。 ⚠️ 1. 接口误用的常见陷…

nodejs读写文件

1.读文件 node有很多模块,可在node模块查看相应模块; var fsrequire(fs)fs.readFile(./src/a.doc,utf8,function(err,data){// 如果发生错误,data是undefined 如果成功 err为null console.log(err); console.log(data); }) 2.写文件 var…

ConcurrentHashMapRedis实现二级缓存

1. 为什么使用ConcurrentHashMap?在Java中,ConcurrentHashMap 是一个线程安全且高效的哈希表实现,广泛用于高并发场景。将其用作一级缓存的原因主要包括以下几点:1.1. 线程安全性ConcurrentHashMap 是线程安全的,支持多…

Mysql集群技术

实验在RHEL7中做,因为9中缺少了一个关键的高可用组件环境:两台数据库,内存和CPU要多一点主流是MYSQL(开源),Oracle收费较贵RHEL7中直接用make编译是有问题的,所以需要要gcc工具做好前置准备&…

自动驾驶嵌入式软件工程师面试题【持续更新】

文章目录前言请描述 CAN 帧的基本结构(包括标识符、数据字段、CRC 等)描述 WebSocket 协议的基本工作流程(包括握手、数据帧结构)请说明如何实现 WebSocket 连接的心跳机制以检测连接状态,并描述在断开后如何通过重连策…

vue(5)-组件

一.组件三大组成部分(结构/样式/逻辑)(1)组件样式冲突用scoped全局样式在组件中起全局作用,局部样式可以加scoped属性来只作用于当前组件图中只给baseone加这个样式,就在baseone中style加scoped&#xff08…

【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术

文章目录一、核心概念:数据分类的"切分线"二、工作原理:从"找分界线"理解二、常见算法1、逻辑回归:二分类2、线性判别分析(LDA):分类与降维3、两种算法对比分析三、实际应用&#xff1…

静态分析c/cpp源码函数调用关系图生成

calltree calltree 不好使用 Dpxygen https://www.doxygen.nl/download.html Graphviz https://graphviz.org/download/ 静态代码调用结构图分析、构建、生成 doxygen doxygen在win和linux上均可运行,可以自动分析源码,对c语言项目友好,预处…

使用 MySQL Shell 进行 MySQL 单机到 InnoDB Cluster 的数据迁移实践

迁移背景与环境原来都是用mysqldump,DTS或者cdc迁移,这次8.0用了下新工具感觉挺好用的,简单快捷,30G数据不到源环境:单机 MySQL 8.0,地址为 172.23.3.28目标环境:InnoDB Cluster 集群&#xff0…

淘宝商品API可以获取哪些商品详情数据?

商品详情页商品全部sku信息"skus": {"sku": [{"price": 45.6,"total_price": 0,"orginal_price": 45.6,"properties": "1627207:39617249736","properties_name": "1627207:39617249736…