【机器学习】十大算法之一 “逻辑回归”

news2024/9/24 9:17:16

 

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?type=blog个人简介:打工人。

持续分享:机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。

如发现文章有误,麻烦请指出,我会及时去纠正。有其他需要可以私信我或者发我邮箱:zhilong666@foxmail.com 

        逻辑回归算法是机器学习中应用广泛的一种分类算法,它的主要功能是用于预测待分类数据的类别。从逻辑回归算法的发展史来看,该算法最早是用于解决二分类问题的,并且是基于线性回归模型和逻辑函数(也叫称为Sigmoid函数)发展而来的。随着机器学习的不断发展,逻辑回归算法也得到了广泛的应用,并且也衍生出了多种改进算法,例如正则化逻辑回归、多项式逻辑回归、逻辑回归神经网络等。

本文将详细讲解机器学习十大算法之一“逻辑回归”


目录

一、简介

二、发展史

三、算法公式

四、算法原理

五、算法功能

六、示例代码

七、总结


一、简介

        逻辑回归算法是一种用于分类问题的机器学习算法,其基本原理是利用线性回归模型对数据进行拟合,并通过逻辑函数对结果进行分类。

        逻辑回归算法的主要特点是模型简单、计算方便,并且能够处理大规模数据。我们可以将逻辑回归算法应用于二分类问题和多分类问题中,对于二分类问题,逻辑回归算法通常将数据分为两个类别,例如阴性和阳性,假和真等;而对于多分类问题,逻辑回归算法则可以将数据分为多个类别。

二、发展史

        逻辑回归的发展可以追溯到19世纪初,当时康多内(G.A. Cornu)和皮尔逊(K. Pearson)研究了生物学的性别比例问题,他们提出了一种解决这个问题的方法,也就是将二维数据拟合到一条直线上。但是当时还没有计算机,这个方法并没有得到广泛的应用。

        20世纪初,逻辑回归又被提出,在当时的环境下,由于电子计算技术的进步,计算机的出现,逻辑回归的应用得到了广泛的推广。从此以后,逻辑回归逐渐成为一个被广泛使用的算法,它不仅可以解决二分类问题,还可以解决多分类问题。

三、算法公式

        逻辑回归算法的核心是sigmoid函数(也称为logistics函数),它能够将输入的预测值转化为0到1的离散值,从而完成预测。sigmoid函数的公式如下:

        其中z为任意实数,当z大于0时,sigmoid(z)趋近于1,当z小于0时,sigmoid(z)趋近于0。因此,逻辑回归模型将输入x转化为z,再通过sigmoid函数处理得到概率值p,即: 

        其中,称为逻辑回归的函数表达式,w和b是模型的参数。w是一个长度为n的向量,代表了各个特征的权重大小,b是一个常数,代表了模型的偏置。通过调整w和b的值,可以得到最优的模型。逻辑回归的目标是最大化所有样本的似然函数,即:

        其中,y为分类结果,x为特征向量。 

四、算法原理

        逻辑回归的原理是基于极大似然估计的思想,通过最大化似然函数来得到模型的参数。在二分类问题中,似然函数的公式为:

        其中,n为样本数,yi​为样本的分类结果,p(xi​)为样本分类为正类的概率,1−p(xi​)为分类为负类的概率。因此,逻辑回归的最小化目标就是最大化似然函数,即: 

        为了方便计算,我们通常对似然函数取对数,目标就变成了最小化损失函数J(w,b): 

        其中,n为样本数,yi​为样本的分类结果,p(xi​)为样本分类为正类的概率,1−p(xi​)为分类为负类的概率。通过梯度下降法可以最小化损失函数,得到最优的参数w和b。 

五、算法功能

        逻辑回归算法在实际应用中有以下几个功能:

1、逻辑回归算法可以处理二分类问题和多分类问题,对于二分类问题,逻辑回归算法通常将数据分为两个类别,例如阴性和阳性,假和真等;而对于多分类问题,逻辑回归算法则可以将数据分为多个类别。

2、逻辑回归算法可以处理高维数据,我们可以使用逻辑回归算法对高维数据进行分类。

3、逻辑回归算法是机器学习中最简单的算法之一,其计算速度非常快,并且可以应用于大规模数据上。

4、逻辑回归算法提供了一种可解释性强的分类模型,我们可以通过对系数的解释来推断哪些特征对预测结果的影响最大。

        逻辑回归算法是一种非常实用的二分类模型,其优点如下:

  1. 逻辑回归是一种基于概率论的模型,能够直观地解释模型的预测结果。

  2. 逻辑回归算法是一个轻量级的线性模型,能够快速地训练和预测。

  3. 逻辑回归算法支持在线学习和增量学习,可以动态地调整模型参数。

  4. 逻辑回归算法可以通过正则化等方法进行模型优化,具有很强的鲁棒性和泛化能力。

  5. 逻辑回归算法的应用范围非常广泛,可以用于金融风控、医疗预测等领域,因此在实际应用中具有很高的价值。

六、示例代码

        为了更好地理解逻辑回归的实现过程,我在此提供一个Python版本的逻辑回归示例代码。下面是一个二分类鸢尾花数据集的例子,代码如下:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score

# 1. 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 2. 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 3. 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 4. 构建模型
lr = LogisticRegression(random_state=42)

# 5. 模型训练
lr.fit(X_train, y_train)

# 6. 模型预测
y_pred = lr.predict(X_test)

# 7. 计算模型精度
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

        在上面代码中,首先我们从Sklearn的数据集中导入鸢尾花数据集,并将其存储在变量X中。然后,我们对数据进行标准化处理并将其划分为训练集和测试集。接下来,我们用LogisticRegression函数构建一个逻辑回归模型,然后对训练集数据进行训练。最后,我们预测测试集的类别并计算模型精度。 

        运行该代码后,可以得到如下的结果:

Accuracy: 1.0

七、总结

        逻辑回归算法是实现二分类和多分类问题的一种流行算法。这种算法在概率建模方面展现了良好的特性,它能够输出范围在0和1之间的标签概率值。与其他算法相比,逻辑回归算法的求解时间短,它需要的基础数学知识少,而且它与一些其他任务(如特征选择)的交互性更强。

        逻辑回归算法的主要优点包括其可解释性,适用于众多类型的问题,并具有灵活性。同时,逻辑回归算法也具有一些不足之处,例如对数据中移动趋势的敏感性以及对异常值的敏感性。因此,在实践中选择适当的模型并合理地处理异常值和噪声,对于提升逻辑回归算法的性能至关重要。

        综上所述,逻辑回归算法在数据挖掘和机器学习领域中发挥着非常重要的作用。我们期待未来这种算法的发展将进一步推动其在各种应用领域上的发挥作用。

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

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

相关文章

MindSpore-FCOS模型权重迁移推理对齐实录

准备工作 环境: wsl2 Ubuntu 20.04 mindspore 2.0.0 python 3.8 pytorch 2.0.1 cpu 基于已有的mindspore FCOS项目和FCOS官方pytorch权重来做迁移, FCOS官方pytorch实现 FCOS_imprv_R_50_FPN_1x权重 MindSpore FCOS项目链接 该代码是mindspore1.6实现…

【加强版】SAX解析XML返回对应格式的Map对象(解决元素递归嵌套)

SAX解析XML返回对应格式的Map对象_辛丑年正月十五的博客-CSDN博客 前言 上篇文章实现了xml元素节点的解析并返回了对应格式的Map对象,但是遗留了一个问题,就是当xml中的元素存在递归嵌套时就解析不了,因为qname属性会重复,导致后…

DDD软件架构领域驱动设计

目录 1. DDD概述1.1 软件开发的困境1.2 DDD的来源及简介1.2.1 DDD设计方法 1.3 DDD解决了什么问题1.3.1 沟通问题1.3.2 代码质量问题 1.4 模型和建模1.4.1 什么是模型 1.5 统一语言(UBIQUITOUS LANGUAGE)1.6 什么是DDD 2. 传统开发模式2.1 基础知识回顾2…

Debian12.0.0更换系统语言中文到英文

6月10号,Debian12.0.0更新,想尝尝鲜,在虚拟机里安装好,想将中文改为英文,因为Terminal下输入命令,中文切换麻烦。 一、步骤如下 #1、查看当前语言环境 env | grep LANG #2、en表示语言,US表示…

欧科云链在GEF论坛发起圆桌:监管科技与Web3合规发展图景与展望

6月15日,欧科云链在格林威治经济论坛发起了一场题为“监管科技与Web3合规发展图景与展望”的圆桌会议,此次会议由中国香港贸易发展局副执行董事PatrickLau博士主持。Stratford Finance首席执行官Angelina Kwan,BC科技集团有限公司董事会副主席…

[Web前端] Servlet及应用

文章目录 前言1、简介1.1、Servlet 架构1.1.1、Servlet 任务1.1.2、Servlet 包 1.2、Servlet 环境设置1.2.1、设置 Web 应用服务器:Tomcat 1.3、Servlet 生命周期1.3.1、init() 方法1.3.2、service() 方法1.3.3、doGet() 方法1.3.4、doPost() 方法1.3.5、destroy() …

采集发布到WordPress 特色图片(缩略图)无法显示

采集的数据发布到wordpress系统网站,文章内容是正常的,但是在列表页的缩略图(特色图片)却是显示失败。 这种情况有多种问题都可以造成的,可按照以下步骤逐一排查: 目录 1. 发布映射值是否正确 2. 与主题…

【Python 基础篇】Python 字符串以及字符串常用函数

文章目录 导言一、字符串基础二、字符串操作1、字符串拼接2、字符串格式化3、字符串常用函数len()lower()upper()strip()split()join()replace()find()count() 三、条件控制与字符串总结 导言 字符串是计算机编程中常用的数据类型之一。在 Python 中,字符串是由字符…

切换SVN登录的账号

更换SVN的账号 1、找到已登录的用户信息2、删除已登录的用户信息3、获取重输用户信息弹窗4、使用新的用户信息登录 1、找到已登录的用户信息 (1)在任何文件夹里面右键,找到TortoiseSVN,然后选择里面的Settings (2&am…

【Python 基础篇】Python 条件与循环控制

文章目录 导言一、条件语句1、if-elif-else 结构2、嵌套条件语句3、单行 if 语句 二、循环语句1、while 循环while 循环的高级用法 2、for 循环for 循环的高级用法 示例一:输出 1 到 10 的偶数示例二:获取 100 以内的质数结论 导言 Python 是一种简单而…

【Leetcode -2236.判断根节点是否等于子节点之和 -2331.计算布尔二叉树的值】

Leetcode Leetcode -2236.判断根节点是否等于子节点之和Leetcode -2331.计算布尔二叉树的值 Leetcode -2236.判断根节点是否等于子节点之和 题目:给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。 …

shell脚本自动化部署tomcat

前言 在一个月黑风高的晚上,在公司把程序打包好后,发给现场,结果又被告知不能登录命令行界面部署程序(tomcat部署),只能提供一个shell脚本实现自动化部署,于是拿出我0.5年的开发经验&#xff0…

Spring MVC获取参数和自定义参数类型转换器及编码过滤器

目录 一、使用Servlet原生对象获取参数 1.1 控制器方法 1.2 测试结果 二、自定义参数类型转换器 2.1 编写类型转换器类 2.2 注册类型转换器对象 2.3 测试结果 三、编码过滤器 3.1 JSP表单 3.2 控制器方法 3.3 配置过滤器 3.4 测试结果 往期专栏&文章相关导读…

MySQL数据库学习笔记二

数据库存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)通过数据引擎,对数据进行创建、查询、修改和删除的操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎…

Kubios HRV心率变异性分析软件

Kubios HRV是由东芬兰大学研究团队开发的一款心率变异性分析软件,目前在全球128个国家被1200所大学的科研人员使用。 PC端的Kubios HRV主要分免费版(Standard)和收费版(Premium)两个版本。 免费版仅支持RR间期时间序…

Git添加与提交文件与查看

目录 一、Git添加 二、Git提交文件 三、查看Git仓库的提交历史和当前状态 一、Git添加 1、在终端或命令提示符中,导航到你的Git项目所在的目录,使用 cd 命令切换目录。 2、在目标目录中,运行以下命令来初始化一个新的Git仓库,…

【跟小嘉学 Rust 编程】一、Rust 编程基础

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 文章目录 系列文章目录前言一、Rust是什么?二、Rust 开发环境搭建2.1、下载地址2.2、Windows 环境安装 可以参考2.3、Mac 环境安装2.3.1、安装步骤2.3.2、执行完上述命令之后,有如下提示 2.4、安…

深度学习----第J1周:ResNet50算法实战

深度学习----第J1周:ResNet50算法实战 🍨 本文为🔗365天深度学习训练营 中的学习记录博客** 参考文章:Pytorch实战 | 第P5周:运动鞋识别**🍖 原作者:K同学啊|接辅导、项目定制 文章目录 深度学习…

Elasticsearch 分词器

前奏 es的chinese、english、standard等分词器对中文分词十分不友好,几乎都是逐字分词,对英文分词比较友好。 在kibana的dev tools中测试分词: POST /_analyze {"analyzer": "standard","text": "你太…

chatgpt赋能python:Python文件导出方法详解

Python文件导出方法详解 Python是一种高级编程语言,广泛应用于各种数据科学、人工智能、Web开发等领域。在Python开发中,我们需要将处理好的数据与结果输出为合适的格式,文件导出是常见的输出方式之一。在本文中,我们将详细介绍P…