【机器学习】Logistic回归#1基于Scikit-Learn的简单Logistic回归

news2025/7/13 8:33:13

主要参考学习资料:

《机器学习算法的数学解析与Python实现》莫凡 著

前置知识:线性代数-Python

目录

  • 问题背景
  • 数学模型
    • 类别表示
    • Logistic函数
    • 假设函数
    • 损失函数
    • 训练步骤
  • 代码实现
  • 特点

问题背景

分类问题是一类预测非连续(离散)值的问题,即预先设定类别,向模型输入带有类别信息的训练集样本,最后进行预测。

待分类别只有两个的分类问题为二元分类问题,超过两个为多分类问题

多分类问题可以拆解为多次关于正类(是)和负类(否)的二元逻辑分类问题,形成数据结构中的二叉搜索树来解决。

数学模型

类别表示

用数值表示类别的形式有三种:

①数字形式:最直接,例如0为A类,1为B类,2为C类,本文从该形式入门。

②向量形式:广泛应用于深度学习,n元分类使用n个线性无关的n维向量来表示,例如[1,0,0]为A类,[0,1,0]为B类,[0,0,1]为C类。

③概率值形式:预测结果为每个类的可能概率,例如向量[0.114,0.514,0.810]的每个元素分别代表A、B、C三类的概率。

Logistic函数

离散数据往往与阶跃特征紧密联系,一个最基本的阶跃函数如下:

u ( t ) = { 0 , t < 0 1 , t > 0 u(t)=\left\{\begin{matrix}0,t<0\\1,t>0\end{matrix}\right. u(t)={0,t<01,t>0

请

该函数的输出非0即1,符合二元分类问题的背景,但阶跃函数的不可导为机器学习的优化算法带来问题。

Logistic函数是一种Sigmoid函数(S型函数),作为扮演类似阶跃函数角色的可导函数,其表达式为:

L o g i s t i c ( z ) = 1 1 − e − z \mathrm{Logistic}(z)=\displaystyle\frac1{1-e^{-z}} Logistic(z)=1ez1

其图像为:

可见横坐标尺度越大,图像越近似于阶跃函数。

假设函数

利用Logistic函数将线性模型预测的连续值映射到分类问题所需的非连续值,得到假设函数:

H ( x ) = 1 1 + e − ( w T x i + b ) H(x)=\displaystyle\frac1{1+e^{-(\boldsymbol w^Tx_i+b)}} H(x)=1+e(wTxi+b)1

损失函数

Logistic回归的损失函数为对数损失函数/交叉熵损失函数

L ( x ) = − y log ⁡ y ^ − ( 1 − y ) log ⁡ ( 1 − y ^ ) L(x)=-y\log \hat y-(1-y)\log(1-\hat y) L(x)=ylogy^(1y)log(1y^)

从分类的两种情况来理解它:

若真实值为1,则预测值趋于1时损失值趋于0;

若真实值为0,则预测值趋于0时损失值趋于0;

训练步骤

Logistic回归算法的训练步骤与线性回归算法类似,只不过输出从连续变成了离散。

代码实现

#导入LogisticRegression类
from sklearn.linear_model import LogisticRegression  
#导入鸢尾花分类数据集
from sklearn.datasets import load_iris  
import numpy as np  
import matplotlib.pyplot as plt  
#载入鸢尾花数据集
iris = load_iris()  
#选择前两个特征作为输入(方便可视化)
X = iris.data[:, :2]
#提取分类标签
y = iris.target  
#训练Logistic回归模型
clf = LogisticRegression().fit(X, y)  
#用于可视化的函数
def plot_decision_boundary(X, y, model):  
	#根据两个特征的最值确定坐标边界
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1  
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1  
    #meshgrid方法生成分别以两个列表为横、纵坐标二维网格
    #二维数组xx和yy分别为网格各点的横、纵坐标矩阵
    xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))  
    #ravel方法将坐标矩阵展开到一维
    #c_方法按列连接矩阵,即将横、纵坐标一一组合
    #用模型遍历所有坐标得到各点预测值
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()])  
    #将预测值调整为xx的形状
    Z = Z.reshape(xx.shape)  
    #contourf方法绘制等高线,横纵坐标xx和yy,高度Z
    plt.contourf(xx, yy, Z, alpha=0.8, cmap=plt.cm.coolwarm)  
    #绘制训练数据的散点图
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o', cmap=plt.cm.coolwarm) 
    #绘制轴标签和标题 
    plt.xlabel('Feature 1')  
    plt.ylabel('Feature 2')  
    plt.title('Logistic Regression Decision Boundary')  
    plt.show()  
plot_decision_boundary(X, y, clf)

运行结果:

可见模型对鸢尾花数据集中蓝色数据点分类较为准确,而浅色和红色效果较差,这是因为数据点在选取的两个特征维度下线性不可分。

可以通过 model.score(X,y) \texttt{model.score(X,y)} model.score(X,y)对模型进行性能评估。

特点

优点:形式简单,可解释性强,容易理解和实现,计算代价较低。

缺点:效果有时不好,容易欠拟合。

应用领域:二分类领域,或作为其他算法的部件,例如神经网络算法的激活函数。

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

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

相关文章

8.Dashboard的导入导出

分享自己的Dashboard 1. 在Dashboard settings中选择 JSON Model 2. 导入 后续请参考第三篇导入光放Dashboard&#xff0c;相近

next.js-学习2

next.js-学习2 1. https://nextjs.org/learn/dashboard-app/getting-started2. 模拟的数据3. 添加样式4. 字体&#xff0c;图片5. 创建布局和页面页面导航 1. https://nextjs.org/learn/dashboard-app/getting-started /app: Contains all the routes, components, and logic …

视频推拉流EasyDSS直播点播平台授权激活码无效,报错400的原因是什么?

在当今数字化浪潮中&#xff0c;视频推拉流 EasyDSS 视频直播点播平台宛如一颗璀璨的明珠&#xff0c;汇聚了视频直播、点播、转码、精细管理、录像、高效检索以及时移回看等一系列强大功能于一身&#xff0c;全方位构建起音视频服务生态。它既能助力音视频采集&#xff0c;精准…

【论文详解】Transformer 论文《Attention Is All You Need》能够并行计算的原因

文章目录 前言一、传统 RNN/CNN 存在的串行计算问题二、Transformer 如何实现并行计算&#xff1f;三、Transformer 的 Encoder 和 Decoder 如何并行四、结论 前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加关注哦&#xff…

Framework层JNI侧Binder

目录 一&#xff0c;Binder JNI在整个系统的位置 1.1 小结 二&#xff0c;代码分析 2.1 BBinder创建 2.2 Bpinder是在查找服务时候创建的 2.3 JNI实现 2.4 JNI层android_os_BinderProxy_transact 2.5 BPProxy实现 2&#xff09;调用IPCThreadState发送数据到Binder驱动…

Excel大文件拆分

import pandas as pddef split_excel_file(input_file, output_prefix, num_parts10):# 读取Excel文件df pd.read_excel(input_file)# 计算每部分的行数total_rows len(df)rows_per_part total_rows // num_partsremaining_rows total_rows % num_partsstart_row 0for i i…

OpenCV计算摄影学(7)HDR成像之多帧图像对齐的类cv::AlignMTB

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该算法将图像转换为‌中值阈值位图‌&#xff08;Median Threshold Bitmap&#xff0c;MTB&#xff09;&#xff1a; 1.位图生成‌&#xff1a;…

Axure PR 9 中继器 03 翻页控制

大家好&#xff0c;我是大明同学。 接着上期的内容&#xff0c;这期内容&#xff0c;我们来了解一下Axure中继器图表翻页控制。 预览地址&#xff1a;https://pvie5g.axshare.com 翻页控制 1.打开上期RP 文件&#xff0c;在元件库中拖入一个矩形&#xff0c;宽值根据业务实际…

IO流(师从韩顺平)

文章目录 文件什么是文件文件流 常用的文件操作创建文件对象相关构造器和方法应用案例 获取文件的相关信息应用案例 目录的操作和文件删除应用案例 IO 流原理及流的分类Java IO 流原理IO流的分类 IO 流体系图-常用的类IO 流体系图&#xff08;重要&#xff01;&#xff01;&…

Spring Boot集成Jetty、Tomcat或Undertow及支持HTTP/2协议

目录 一、常用Web服务器 1、Tomcat 2、Jetty 3、Undertow 二、什么是HTTP/2协议 1、定义 2、特性 3、优点 4、与HTTP/1.1的区别 三、集成Web服务器并开启HTTP/2协议 1、生成证书 2、新建springboot项目 3、集成Web服务器 3.1 集成Tomcat 3.2 集成Jetty 3.3 集成…

《Python实战进阶》专栏 No 5:GraphQL vs RESTful API 对比与实现

《Python实战进阶》专栏包括68集&#xff0c;每一集聚焦一个中高级技术知识点&#xff0c;涵盖Python在Web开发、数据处理、自动化、机器学习、并发编程等领域的应用&#xff0c;系统梳理Python开发者的知识集。本集的主题为&#xff1a; No4 : GraphQL vs RESTful API 对比与实…

MYSQL 5.7数据库,关于1067报错 invalid default value for,解决方法!

???作者&#xff1a; 米罗学长 ???个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 ???各类成品java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot&#xff0c;mysql等项目&#xff0c;源码丰富&#xff0c;欢迎咨询。 ???…

【Linux基础】Linux下的C编程指南

目录 一、前言 二、Vim的使用 2.1 普通模式 2.2 插入模式 2.3 命令行模式 2.4 可视模式 三、GCC编译器 3.1 预处理阶段 3.2 编译阶段 3.3 汇编阶段 3.4 链接阶段 3.5 静态库和动态库 四、Gdb调试器 五、总结 一、前言 在Linux环境下使用C语言进行编程是一项基础且…

浅谈HTTP及HTTPS协议

1.什么是HTTP&#xff1f; HTTP全称是超文本传输协议&#xff0c;是一种基于TCP协议的应用非常广泛的应用层协议。 1.1常见应用场景 一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。 2.HTTP请求详解 2.1请求报文格式 我们首先看一下…

Pytest自定义测试用例执行顺序

文章目录 1.前言2.pytest默认执行顺序3.pytest自定义执行顺序 1.前言 在pytest中&#xff0c;我们可能需要自定义测试用例的执行顺序&#xff0c;例如登陆前需要先注册&#xff0c;这个时候就需要先执行注册的测试用例再执行登录的测试用例。 本文主要讲解pytest的默认执行顺序…

人大金仓KCA | 用户与角色

人大金仓KCA | 用户与角色 一、知识预备1. 用户和角色 二、具体实施1. 用户管理-命令行1.1 创建和修改用户1.2 修改用户密码1.3 修改用户的并发连接数1.4 修改用户的密码有效期 2.用户管理-EasyKStudio2.1 创建和修改用户2.2 修改用户密码2.3 修改用户的并发连接数2.4 修改用户…

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖&#xff0c;基本上绕不开一个架构“Medallion”&#xff0c; 它使得数据管理更为简单有效。ADB 通过…

智能证件照处理器(深度学习)

功能说明:支持常见证件照尺寸(一寸、二寸、护照等) 智能背景去除(使用深度学习模型)自定义背景颜色选择自动调整尺寸并保持比例实时预览处理效果注意:整合rembg进行抠图,使用Pillow处理图像缩放和背景替换,定义常见证件照尺寸,并提供用户交互选项。首次运行时会自动下…

C++-第十三章:红黑树

目录 第一节&#xff1a;红黑树的特征 第二节&#xff1a;实现思路 2-1.插入 2-1-1.unc为红 2-1-2.cur为par的左子树&#xff0c;且par为gra的左子树(cur在最左边) 2-1-2-1.unc不存在 2-1-2-2.unc为黑 2-1-3.cur为par的右子树&#xff0c;且par为gra的右子树(cur在最右侧) 2-…

推荐3个背景渐变色的wordpress主题

干净、清爽、背景渐变色的wordpress企业主题 ​ 服务类公司wordpress企业主题https://www.jianzhanpress.com/?p8255 红色大气的wordpress企业主题&#xff0c;适合服务行业的公司搭建企业官方网站使用。 ​ wordpress询盘型独立站主题https://www.jianzhanpress.com/?p8258…