Python从0到100(五十二):逻辑回归及鸢尾花数据集预测

news2024/9/22 13:44:11

逻辑回归是⼀种⽤于解决⼆分类问题的监督学习算法,其基本原理是使⽤ 逻辑函数(也称为Sigmoid函数) 来建模
因变量(输出)与⾃变量(输⼊)之间的概率关系。逻辑回归的⽬标是估计某个事件发⽣的概率,通常表示为0或
1,例如肿瘤是恶性(1)或良性(0)。

1.基本原理

逻辑回归基于以下思想:我们希望将线性组合的输出映射到⼀个介于0和1之间的概率值,以表示事件发⽣的可能性。为此,逻辑回归使⽤逻辑函数(Sigmoid函数)来执⾏这种映射。
逻辑回归的基本原理如下:

  1. 假设数据服从⼀个二项分布。
  2. 使⽤线性回归模型的线性组合来建模数据的对数⼏率。
  3. 对线性组合应⽤逻辑函数(Sigmoid函数),将连续的输出转换为概率值。
  4. 根据概率值进⾏分类,通常设置⼀个阈值来决定类别。

2.公式模型

逻辑回归的核⼼公式可以表示为:
在这里插入图片描述
在这个公式中:

  • P(y=1|X)是事件发⽣的概率,也就是因变量(输出)等于1的概率。
  • X是输⼊⾃变量(特征)的向量,包括x1,x2...xn
  • w0,w1....wn是模型的参数, w0是截距, w1....wn是⾃变量x1,x2...xn的权重。
  • e是⾃然对数的底(约等于2.71828)。

这个公式中的指数部分-(w0+w1x1+w2x2+...+wnxn)表示线性组合的结果,然后通过Sigmoid函数进⾏映射,将其压缩到0和1之间。
Sigmoid函数的数学表达式是:
在这里插入图片描述
其中, 是任何实数值。Sigmoid函数具有S形曲线,因此可以将线性组合的输出映射到0到1之间的概率值,使得逻辑回归可以⽤于⼆分类问题。
逻辑回归的训练⽬标是找到最佳的参数w0,w1....wn ,以最⼤程度地拟合观测数据,并使得预测的概率尽可能接近实际的类别标签。通常使⽤最⼤似然估计等⽅法来优化参数。
逻辑回归⼴泛⽤于许多领域,包括医学诊断、⾦融⻛险评估、⾃然语⾔处理、图像分类等,特别适⽤于⼆分类问题

3.优缺点

优点:

  1. 实现简单:逻辑回归是⼀种简单且易于实现的分类算法。
  2. 计算效率⾼:训练速度快,适⽤于⼤规模数据集。
  3. 输出结果具有概率意义:可以得到样本属于某个类别的概率,⽽不仅仅是⼀个硬分类结果。

缺点:

  1. 仅适⽤于⼆分类问题:逻辑回归通常只适⽤于解决⼆分类问题。
  2. 对特征空间的线性边界限制:逻辑回归假设特征之间的关系是线性的,对于⾮线性问题效果不佳。

4.适用场景

逻辑回归适⽤于以下场景:

  1. ⼆分类问题:当需要解决⼆分类问题时,逻辑回归是⼀个简单⽽有效的选择。
  2. 需要得到概率输出的场景:逻辑回归可以输出样本属于某个类别的概率,适⽤于需要概率预测的任务,如风险评估、客户流失预测等。
  3. 需要快速建⽴基准模型的情况下,逻辑回归也是⼀个不错的选择。

逻辑回归是⼀种简单⽽强⼤的分类算法,尤其适⽤于⼆分类问题和需要概率输出的场景。然而,在处理⾮线性问题时,逻辑回归的表现可能不如⼀些复杂的⾮线性模型。

5.逻辑回归及鸢尾花数据集预测

下⾯使⽤鸢尾花数据集(Iris dataset)。这个数据集包含了三种不同种类的鸢尾花的花萼⻓度和宽度。
⾸先加载了鸢尾花数据集,并选择了其中的两个特征(花萼⻓度和宽度)。然后我们训练了⼀个逻辑回归模型,并在测试集上进⾏了预测。接着,我们计算了模型的准确率,并绘制了决策边界,以便可视化模型的分类效果。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
from matplotlib.colors import ListedColormap
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data[:, :2] # 只选择前两个特征⽤于可视化
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练逻辑回归模型
lr = LogisticRegression()
lr.fit(X_train, y_train)
# 在测试集上进⾏预测
y_pred = lr.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 绘制决策边界
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01),
np.arange(y_min, y_max, 0.01))
Z = lr.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 绘制结果
plt.figure(figsize=(10, 6))
plt.contourf(xx, yy, Z, alpha=0.8, cmap=ListedColormap(('red', 'green', 'blue')))
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=ListedColormap(('red', 'green', 'blue')),
edgecolors='k')
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Logistic Regression Decision Boundary')
plt.show()

在这里插入图片描述

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

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

相关文章

YOLOV8网络结构|搞懂Backbone-SPPF

SPPF SPP衍生而来。 因为速度快,所以是SPPF-Fast CONV 3个Maxpool串联 Concat 最后又Conv

QT 控件使用案例

常用控件 表单 按钮 Push Button 命令按钮。Tool Button:工具按钮。Radio Button:单选按钮。Check Box:复选框按钮。Command Link Button:命令链接按钮。Dialog Button Box:按钮盒。 容器组控件(Containers) Group Box…

JavaEE 的相关知识点(一)

一、过滤器 过滤器(Filter)是一个用于对请求和响应进行预处理的组件。过滤器可以在 Java Servlet 规范中使用,通常用于执行一些通用的任务 1、过滤器的作用 过滤器是一种javaEE规范中定义的一种技术,可以让请求达到目标servlet之…

Open3D 格网法计算点云的占地面积

目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2数据显示 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概…

林小茶 C语言程序设计 8.48.58.6答案

【8.4】用结构体表示日期&#xff0c;编写程序计算北京奥运会倒计时的天数并输出&#xff08;2008年8月8日北京奥运会开幕&#xff0c;输入的日期范围是2008年1月1日-2008年8月7日&#xff09;。 #include<stdio.h> struct Date{int year;int month;int day; }; int mai…

硬件电路仿真-LTspice官方软件使用-运放电路仿真实战

文章目录 一&#xff1a;LTspice简介1.1 推荐先简单运用1.2 课程配套资料1.3 仿真过程1.4 SPICE模型1.5 LTSPICE工具栏和快捷键1.6 LTSPICE数量级 二&#xff1a;基本功能&#xff08;探索功能如何使用&#xff09;2.1 瞬态分析(.tran)2.2 交流分析&#xff08;.ac&#xff09;…

基于Springboot3 +vue2的民宿酒店预订系统

这个一个大数据库课程设计&#xff0c;也是计算机软件课程设计大作业&#xff0c;Springboot vue民宿酒店预订系统 本系统是采用Springboot3 vue2的酒店预订系统 &#xff0c;数据库mysql ,用户权限分为系统管理员&#xff0c;客房操作人员、和 普通用户&#xff08;游客&…

如何在Python中使用情感分析API

情感分析 API 服务是一种借助人工智能技术的工具&#xff0c;能够自动识别并衡量文本数据&#xff08;像社交媒体的帖子、产品的评论、新闻文章等等&#xff09;所蕴含的情感色彩。在本文里&#xff0c;我们会一同探讨怎样在 Python 中集成情感分析 API &#xff0c;并且展示它…

【Python机器学习】利用SVD简化数据——示例:菜肴推荐引擎

现在&#xff0c;构建一个推荐引擎&#xff0c;该推荐引擎关注的是餐馆食物的推荐。假设一个人决定外出吃饭&#xff0c;但并不知道去哪吃什么&#xff0c;我们这个推荐系统就可以帮他做到这两点。 首先我们构建一个基本的推荐引擎&#xff0c;它能够寻找用户没有尝过的菜肴&a…

C++(11)类语法分析(2)

C(10)之类语法分析(2) Author: Once Day Date: 2024年8月17日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 …

有关缓存的一些面试知识

1、讲一讲Redis各种数据类型与底层实现 底层数据结构一共有 7 种&#xff0c;分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组、快速列表。它们和数据类型的对应关系如下图所示 String 类型的底层实现只有一种数据结构&#xff0c;也就是简单动态字符串。而…

57qi5rW35LqRZUhS pc.mob SQL注入漏洞复现

0x01 产品简介 57qi5rW35LqRZUhS是大中型企业广泛采用人力资源管理系统。某云是国内顶尖的HR软件供应商,是新一代eHR系统的领导者。 0x02 漏洞概述 57qi5rW35LqRZUhS pc.mob 接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例…

Linux-LVM创建和扩容

文章目录 1. 直接上手1.2 LVM 概念1.2.1 关键术语 1.3 LVM使用步骤1.3.1 创建物理卷&#xff08;PV&#xff09;1.3.2 创建卷组&#xff08;VG)1.3.3 创建逻辑卷&#xff08;LV&#xff09;1.3.4 格式化逻辑卷1.3.5 挂载逻辑卷1.3.6 扩展和缩小逻辑卷1.3.6.1 扩展逻辑卷1.3.6.2…

Science Robotics 受螳螂视觉启发的立体人工复眼技术及其边缘计算应用

在自然界中&#xff0c;生物体的独特生理结构和功能一直是人类技术创新的灵感源泉。节肢动物&#xff0c;尤其是昆虫类生物&#xff0c;高效的视觉系统吸引了众多研究者的关注。所有昆虫当中&#xff0c;螳螂因其独特的视觉机制&#xff08;左眼和右眼视野重叠形成的立体视觉&a…

网络编程项目篇

一、tftp客户端下载 1&#xff09;tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&#xff0…

【SpringBoot】SpringBoot中分页插件(PageHelper)的使用

目录 1.分页概念 2.原生写法 3.PageHelper插件分页查询 3.1 介绍 3.2 使用 3.3 Page对象和PageInf对象 1.分页概念 用户查询的数据不可能一次性全部展示给用户&#xff08;如果用户有一万条数据呢&#xff09;&#xff0c;而是分页展示给用户&#xff0c;这就是分页查询。…

Hospital Information System (HIS)

Hospital Information System &#xff08;HIS&#xff09; 医院门诊就诊流程

快速体验Ollama安装部署并支持AMD GPU推理加速

序言 Ollama 是一个专注于本地运行大型语言模型&#xff08;LLM&#xff09;的框架&#xff0c;它使得用户能够在自己的计算机上轻松地部署和使用大型语言模型&#xff0c;而无需依赖昂贵的GPU资源。Ollama 提供了一系列的工具和服务&#xff0c;旨在简化大型语言模型的安装、…

深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论

前言&#xff1a; JVM运行时数据区&#xff08;内存布局&#xff09;是Java程序执行时用于存储各种数据的内存区域。这些区域在JVM启动时被创建&#xff0c;并在JVM关闭时销毁。它们的布局和管理方式对Java程序的性能和稳定性有着重要影响。 目录 一、由以下5大部分组成 1.…

【html+css 绚丽Loading】 - 000004 玄天旋轮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…