机器学习算法 —— 逻辑回归

🌟欢迎来到 我的博客 —— 探索技术的无限可能!


🌟博客的简介(文章目录)

目录

  • 逻辑回归
    • 逻辑回归的介绍
    • 逻辑回归的优点
    • 逻辑回归的缺点
    • 逻辑回归的应用
  • 实践
    • 演示
      • 库函数导入
      • 模型训练
      • 模型参数查看
      • 数据和模型可视化
      • 模型预测
    • 基于鸢尾花数据集的逻辑回归分类

逻辑回归

逻辑回归的介绍

逻辑回归是一种广义线性模型,常用于解决分类问题

        逻辑回归是一种常用的统计方法,通常用于处理分类问题。其基本原理是利用线性回归模型的结果通过一个sigmoid函数(也称为逻辑函数)将连续的预测值映射到0和1之间,从而进行分类。逻辑回归常被用于二分类问题,但也可以通过一些技巧进行多分类。逻辑回归的简洁性和直观性使其在实际应用中得到广泛采用。通过将线性回归的结果经过逻辑函数转换,逻辑回归可以将预测结果转化为类别概率,这为许多问题提供了更为直观的解释。此外,逻辑回归的数学基础相对简单,易于理解和实现,使其成为许多数据科学从业者入门机器学习的首选算法之一。

逻辑回归的优点

        逻辑回归具有许多优点。

  • 简单而直观,易于理解和实现。
  • 模型的训练和预测速度快,适用于大规模数据集。
  • 逻辑回归可以提供分类结果的概率估计,而不仅仅是类别标签,这对许多实际应用具有重要意义。
  • 逻辑回归对于特征之间的关系不敏感,即使特征之间存在一定的相关性,也能给出可靠的结果。这使得逻辑回归成为了许多实际问题的首选分类算法之一。

逻辑回归的缺点

        逻辑回归也存在一些缺点。

  • 它假设特征之间是线性相关的,这在某些情况下可能不成立,导致模型性能下降。
  • 逻辑回归往往不能很好地处理非线性关系,因此在特征之间存在复杂关系时效果可能不佳。
  • 逻辑回归对异常值敏感,需要进行一定的数据预处理和异常值处理。虽然逻辑回归有这些缺点,但在许多实际问题中,通过合适的特征工程和模型调优,仍然可以取得很好的分类效果。

逻辑回归的应用

        逻辑回归在许多领域都有广泛的应用。在医学领域,它常被用于疾病预测和诊断,如肿瘤预测、心脏病风险评估等。在市场营销中,逻辑回归常被用于客户分类和预测,帮助企业制定营销策略。在信用评分领域,逻辑回归可以用于评估借款人的信用风险,辅助银行和金融机构做出贷款决策。总的来说,逻辑回归作为一种简单而有效的分类算法,在各个领域都有着广泛的应用前景。

实践

演示

请提前下载

!pip install matplotlib seaborn
!pip install -U scikit-learn --user
!pip install matplotlib seaborn
!pip install -U scikit-learn --user

库函数导入

##  基础函数库
import numpy as np 

## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns

## 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression

模型训练

演示LogisticRegression分类

        构造了一个简单的数据集,包含了6个样本和对应的标签。然后调用逻辑回归模型,并将数据集传入模型进行拟合。

## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])

## 调用逻辑回归模型
lr_clf = LogisticRegression()

## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2

模型参数查看

        输出会显示逻辑回归模型的权重和截距值。

## 查看其对应模型的w
print('the weight of Logistic Regression:',lr_clf.coef_)

## 查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)

数据和模型可视化

可视化构造的数据样本点

        绘制数据集的散点图,其中样本的颜色表示其对应的类别

plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show()

在这里插入图片描述

可视化决策边界

        绘制数据集的散点图,并在图中添加逻辑回归模型的决策边界(用蓝色线表示)。

plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')

nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))

z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape)
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')

plt.show()

在这里插入图片描述

可视化预测新样本

        在散点图上添加了两个新的样本点,并在图中标注其位置。同时也包括了之前的训练样本和逻辑回归模型的决策边界。

plt.figure()
## new point 1
x_fearures_new1 = np.array([[0, -1]])
plt.scatter(x_fearures_new1[:,0],x_fearures_new1[:,1], s=50, cmap='viridis')
plt.annotate(s='New point 1',xy=(0,-1),xytext=(-2,0),color='blue',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))

## new point 2
x_fearures_new2 = np.array([[1, 2]])
plt.scatter(x_fearures_new2[:,0],x_fearures_new2[:,1], s=50, cmap='viridis')
plt.annotate(s='New point 2',xy=(1,2),xytext=(-1.5,2.5),color='red',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))

## 训练样本
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')

# 可视化决策边界
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')

plt.show()

在这里插入图片描述

模型预测

        利用训练好的逻辑回归模型对新样本点进行预测,并输出其预测的类别和每个类别的概率。

## 在训练集和测试集上分别利用训练好的模型进行预测
y_label_new1_predict = lr_clf.predict(x_fearures_new1)
y_label_new2_predict = lr_clf.predict(x_fearures_new2)

print('The New point 1 predict class:\n',y_label_new1_predict)
print('The New point 2 predict class:\n',y_label_new2_predict)

## 由于逻辑回归模型是概率预测模型(前文介绍的 p = p(y=1|x,\theta)),所以我们可以利用 predict_proba 函数预测其概率
y_label_new1_predict_proba = lr_clf.predict_proba(x_fearures_new1)
y_label_new2_predict_proba = lr_clf.predict_proba(x_fearures_new2)

print('The New point 1 predict Probability of each class:\n',y_label_new1_predict_proba)
print('The New point 2 predict Probability of each class:\n',y_label_new2_predict_proba)

在这里插入图片描述

可以发现训练好的回归模型将X_new1预测为了类别0(判别面左下侧),X_new2预测为了类别1(判别面右上侧)。其训练得到的逻辑回归模型的概率为0.5的判别面为上图中蓝色的线。

基于鸢尾花数据集的逻辑回归分类

接下文:机器学习算法 —— 基于鸢尾花数据集的逻辑回归分类

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CCIG 2024:大模型技术及其前沿应用论坛深度解析

一、CCIG论坛介绍 中国图象图形大会(CCIG 2024)是一场备受瞩目的学术盛会,近期在陕西省西安市曲江国际会议中心举行。这次会议以“图聚智生,象合慧成”为主题,由中国图象图形学学会主办,旨在汇聚图像图形领…

12 - 常用类

那就别跟他们比,先跟自己比,争取今天比昨天强一些,明天比今天强一些。 1.包装类 针对八种基本数据类型封装的相应的引用类型。 有了类的特点,就可以调用类中的方法。(为什么要封装) 基本数据类型包装类b…

b端系统项目进度巡检设备物资劳务台账等OA前端UI设计开发

b端系统项目进度巡检设备物资劳务台账等OA前端UI设计开发

phpstudy配置的站点不能访问了

无法打开站点 打开网站的时候出现如下 没有人为主动去更改配置项,今天就不能正常访问了 检查了一遍配置,发现并无大碍,那就重新配置一遍看看 配置phpstudy 1、新建网站 2、选择项目入口文件夹 3、配置伪静态 4. 确认保存 在我的电脑 C:\…

公安视频图像信息数据库及GA/T 1400视图库视频监控系统的使用场景

随着科技的快速发展,大数据、人工智能等新技术不断融入各行各业,为各行各业带来了前所未有的变革。在公安领域,GA/T 1400协议公安视频图像信息数据库的应用为视频监控场景提供了强有力的支持,极大地提升了公安工作的效率和准确性。…

风管静压箱的作用及选型

1.压力的种类 动压—由风速而产生的压力;空调厂家设计时均已经考虑,无需计算。静压—垂直作用于风管壁面的压力,用于克服风管阻力;所以,对于风管机组有零静压和带静压之分,零静压指静压为0Pa,不…

VUE3 学习笔记(14):VUE3 组合式API与传统选项式API用法

VUE3相较VUE2的亮点很多,作为后端开发置于前端最大的感受就是组合式API(之前采用的是选项式API);它使得整体更简洁易用,但值得提醒的是官方并未强制要求二选一,尽管如此在同一个项目中还是不要出现两种写法。 选项式AP…

SpringCloud 微服务中网关如何记录请求响应日志?

在基于SpringCloud开发的微服务中,我们一般会选择在网关层记录请求和响应日志,并将其收集到ELK中用作查询和分析。 今天我们就来看看如何实现此功能。 日志实体类 首先我们在网关中定义一个日志实体,用于组装日志对象 Data public class …

U-Net: Convolutional Networks for Biomedical Image Segmentation--论文笔记

U-Net: Convolutional Networks for Biomedical Image Segmentation 资料 1.代码地址 2.论文地址 https://arxiv.org/pdf/1505.04597 3.数据集地址 论文摘要的翻译 人们普遍认为,深度网络的成功训练需要数千个带注释的训练样本。在本文中,我们提出…

“GPT-4o深度解析:技术演进、能力评估与个人体验综述“

文章目录 每日一句正能量前言对比分析模型架构性能应用场景用户体验技术创新社区和生态系统总结 技术能力语言生成能力语言理解能力技术实现总结 个人感受关于GPT-4o的假设性观点:关于当前语言模型的一般性观点: 后记 每日一句正能量 又回到了原点&#…

【前端】display:none和visibility:hidden两者的区别

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号:洲与AI。 🤓 欢迎大家关注我的专栏,我将分享Web前后端开发、…

电机行业MES生产管理系统--助力电机企业数字化转型

电机行业 MES 系统是一个综合生产管理系统, 融合了工厂企业必要的销售、 物 流和制造管理等全公司基础业务以及生产计划和现场监测管理。 一、传统机电行业的管理难题: 1、 产品标准化程度较低, 制造工艺复杂, 生产周期较长&#…

day50 动态规划 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

198.打家劫舍 当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。 动规五部曲 1.确定dp数组(dp table)以及下标的含义 dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。 2.确…

结构体+结构体内存对齐+结构体实现位段

结构体内存对齐实现位段 一.结构体1.结构体的声明2.结构体变量成员访问操作符3.结构体传参4.匿名结构体5.结构的自引用 二.结构体内存对齐1.对齐规则2.为什么存在内存对齐?3.修改默认对齐数 三.结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段…

SELinux深度解析:安全增强型Linux的探索与应用(上)

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、SELinux概述 2、SELinux诞生背景 3、SELinux …

Django 视图探秘:FBV与CBV注册方式的异同,揭秘as_view()的执行魔法

文章目录 一、FBV、CBV注册方式及其区别FBVCBV 二、as_view()函数查看对应的view函数具体内容,最终返回的是dispatch方法查看dispatch方法 一、FBV、CBV注册方式及其区别 FBV FBV:path(index/,views.index) 通过调用函数方式,views.index是一…

打印机扫描工具V2.1发布

打印机扫描工具V2.1发布 从打印机扫描工具发布1.4版本以来,大家反馈了一些问题,目前就比较集中的问题,做了一些优化,做了一些大的调整,发布了2.1版本。 优化问题: 进一步优化安装包太大问题,…

上海亚商投顾:深成指、创业板指均涨超1%,电力股午后集体走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日低开后震荡反弹,深成指、创业板指均涨超1%,黄白二线依旧分化。电力、电网股午…

CHATGPT升级plus(已有账号前提下)

注册wildcard(虚拟卡) 注册号账号后先进行充值,充值后选择CHATGPT一键升级按照他的流程来即可 Wildcard网址:Wildcard跳转注册 填写邀请码充值时少两美金合计14¥ 邀请码:OL3QXTRH

挑战你的数据结构技能:复习题来袭【6】

1. (单选题)设无向图的顶点个数为n,则该图最多有()条边 A. n-1 B. n(n-1)/2 C. n(n1)/2 D. 0 答案:B 分析: 2. (单选题)含有n个顶点的连通无向图,其边的个数至少为()。 A. n-1 B. n C. n1 D. nlog2n 答案:A…