Python28 十大机器学习算法之线性回归和逻辑回归

1.三类广义上的机器学习算法

· 监督学习。工作原理:该算法由一个目标/结果变量(或因变量)组成,该变量将从一组给定的预测变量(自变量)进行预测。使用这组变量,我们生成了一个将输入数据映射到所需输出的函数。训练过程将继续进行,直到模型在训练数据上达到所需的准确性水平。监督学习的例子:回归、决策树、随机森林、KNN、逻辑回归等。

·无监督学习。工作原理:在这个算法中,我们没有任何目标或结果变量来预测/估计(这称为未标记数据)。它用于推荐系统或对不同组中的种群进行聚类。聚类算法广泛用于将客户细分为不同的组以进行特定的干预。无监督学习的例子有:Apriori算法,K-means聚类。

·强化学习。工作原理:使用此算法,可以训练智能体做出特定的决策。智能体暴露在一个环境中,它通过反复试验不断地训练自己。智能体从过去的经验中学习,并试图获取最好的知识来做出准确的业务决策。加强学习示例:马尔可夫决策过程。

2.常用的机器学习算法

以下是常用的机器学习算法,这些算法几乎可以应用于任何数据问题:

  1. 线性回归

  2. 逻辑回归

  3. 决策树

  4. 支持向量机

  5. 朴素贝叶斯

  6. kNN

  7. K-均值

  8. 随机森林

  9. 降维算法

  10. 梯度提升算法

    • GBM

    • XGBoost

    • LightGBM

    • CatBoost

3.十大机器学习算法

1.线性回归

线性回归指的是根据连续变量估计实际值(房屋成本、通话次数、总销售额等)。在这里,我们通过拟合最佳拟合线来建立自变量和因变量之间的关系。这条最佳拟合线称为回归线,由线性方程 Y= a*X + b 表示。

示例1:理解线性回归的最好方法是重温童年的这种经历。假设你让一个五年级的孩子通过增加体重顺序来安排他班上的人而不问他们的体重。你认为孩子会怎么做?他可能会观察(视觉分析)人的身高和体型,并使用这些可见参数的组合来安排他们。这是现实生活中的线性回归。孩子实际上已经弄清楚身高和身材会通过关系与体重相关,这看起来像上面的等式。

在此等式中:

  • Y – 因变量

  • a – 斜率

  • X – 自变量

  • b – 偏置(截距)

这些系数 a 和 b 是基于最小化数据点与回归线之间距离的平方差之和得出的。

示例2:下面我们确定了线性方程 y=0.2811x+13.9 的最佳拟合线。现在使用这个等式,我们知道一个人的身高就可以找到对应的体重。

图片

线性回归主要有两种类型:简单线性回归多元线性回归。简单线性回归的特征是一个自变量。多元线性回归(顾名思义)的特征是多个(超过 1 个)自变量。在寻找最佳拟合线时,可以拟合多项式或曲线回归,这些被称为多项式或曲线回归。

from sklearn import linear_model  # 从scikit-learn库中导入 linear_model 模块,该模块包含了线性回归等线性模型。
import numpy as np  # 用于数值计算x_train=np.random.rand(4,4)  # 生成 4x4 的随机数组,这里的x_train和y_train是训练数据的输入和输出(或称为特征和目标)
print("训练集的输入:", x_train)y_train=np.random.rand(4,4)
print("训练集的输出:",y_train)# x_test 也是随机生成的 4x4 数组,用于测试模型
x_test=np.random.rand(4,4)
print("测试集的输入:",x_test)# 创建一个线性回归对象
linear = linear_model.LinearRegression()
# 使用 linear.fit(x_train, y_train) 来训练模型,这实际上是计算线性回归的系数(也称为权重)和截距,以最小化预测值与实际值之间的平方误差
linear.fit(x_train, y_train)
linear.score(x_train, y_train)  # 用于计算模型在训练数据上的决定系数(R^2 值), 这个值越接近 1,说明模型在训练数据上的拟合效果越好。print('Coefficient模型权重: \n', linear.coef_)  # 返回模型的系数(或称为权重),对于多元线性回归(多个输入特征),这是一个数组,每个元素对应一个特征的系数
print('Intercept模型的偏置: \n', linear.intercept_)  # 返回模型的截距predicted= linear.predict(x_test)  # 使用 linear.predict(x_test) 对测试数据 x_test 进行预测,并返回预测值
print('predicted模型的预测值:\n',predicted)# 输出结果:
'''
训练集的输入: [[0.20754042 0.25384413 0.22825499 0.57619701][0.57559759 0.29673635 0.4255568  0.4777517 ][0.10862619 0.90036591 0.45464787 0.172535  ][0.68197982 0.54844108 0.57867612 0.6864402 ]]
训练集的输出: [[0.95610395 0.16729992 0.17283568 0.42404863][0.02875033 0.25366368 0.19983908 0.39018791][0.43278431 0.38999408 0.02494574 0.06259235][0.1805258  0.58757488 0.60743324 0.24927747]]
测试集的输入: [[0.4405055  0.21761395 0.31916676 0.06118665][0.99743372 0.03209244 0.04725867 0.0013879 ][0.55770033 0.77004149 0.69764437 0.43791772][0.31754778 0.572482   0.72450059 0.87935267]]
Coefficient模型权重: [[-1.69223839  0.29025176 -0.72312235  1.7704178 ][ 0.14544513  0.60746457  0.31486026  0.56220411][ 0.19368336  0.42893018  0.25579368  1.14936371][ 0.05912962 -0.48518575 -0.17305051  0.00680509]]
Intercept模型的偏置: [ 0.37857994 -0.41289589 -0.69688898  0.57051697]
predicted模型的预测值:[[-0.42616822 -0.08174143 -0.36626264  0.43616512][-1.33171744 -0.23266884 -0.47625358  0.60575536][-0.07086098  0.60185145  0.42320209  0.11213277][ 1.04029636  0.70354454  0.80618827  0.19214222]]
'''
2.逻辑回归

不要被它的名字误导!实际上,逻辑回归(Logistic Regression)是一种分类算法,而非回归算法。它用于根据一组给定的自变量来估计离散值(通常是二进制值,如0/1、是/否、真/假)。简而言之,逻辑回归通过将数据拟合到逻辑函数(也称为sigmoid函数)来预测事件发生的概率。因此,它有时也被称为 logit 回归。由于它预测的是概率,所以其输出值介于0和1之间,正如我们所预期的。

为了更直观地理解逻辑回归,让我们通过一个简单的例子来探讨。

假设你的朋友给你出了一个谜题来解。结果只有两种可能——要么你解开了,要么你没有解开。现在想象一下,你被提供了一系列不同主题的谜题或测验,目的是了解你擅长哪些科目。这项研究的结果可能是这样的——如果你被问到一个基于三角函数的问题,你有70%的可能性解开它。而如果你面对的是五年级的历史问题,那么你答对的概率可能只有30%。这正是逻辑回归能够为你提供的。

在数学上,逻辑回归是通过将预测变量的线性组合转化为结果的对数几率(也就是事件发生与不发生的概率之比的自然对数)来实现分类功能的。这样,我们就可以根据给定的自变量来预测某一事件发生的概率了。

odds= p / (1-p) = probability of event occurrence / probability of not event occurrence

ln(odds) = ln(p/(1-p))

logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk

上面 p 是存在目标特征的概率,它选择的参数是使观察样本值的最大化,而不是最小化平方误差之和的参数(如在普通回归中)。

以下是一个简单的逻辑回归的例子:

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt# 创建虚拟数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 0, 1, 1, 1])  # 0表示负样本,1表示正样本# 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建逻辑回归模型对象
model = LogisticRegression()# 使用训练数据拟合模型
model.fit(X_train, y_train)# 输出模型系数和截距
print('Coefficient of model :', model.coef_)
print('Intercept of model', model.intercept_)# 在训练集上进行预测
predict_train = model.predict(X_train)
print('Target on train data', predict_train) # 计算训练集的准确率
accuracy_train = accuracy_score(y_train, predict_train)
print('accuracy_score on train dataset : ', accuracy_train)# 在测试集上进行预测
predict_test = model.predict(X_test)
print('Target on test data', predict_test) # 计算测试集的准确率
accuracy_test = accuracy_score(y_test, predict_test)
print('accuracy_score on test dataset : ', accuracy_test)# 绘制训练集和测试集的散点图
plt.figure(figsize=(10, 5))# 绘制训练集
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap='coolwarm', label='Train Set')# 绘制测试集
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap='coolwarm', marker='x', label='Test Set')# 绘制决策边界
x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, 0.1), np.arange(x2_min, x2_max, 0.1))
Z = model.predict(np.c_[xx1.ravel(), xx2.ravel()])
Z = Z.reshape(xx1.shape)
plt.contourf(xx1, xx2, Z, alpha=0.4, cmap='coolwarm')
plt.xlim(xx1.min(), xx1.max())
plt.ylim(xx2.min(), xx2.max())plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Logistic Regression Decision Boundary')
plt.legend()
plt.show()# 输出结果:
'''
Coefficient of model : [[0.62622224 0.62622516]]
Intercept of model [-2.90191064]
Target on train data [1 1 0 1]
accuracy_score on train dataset :  1.0
Target on test data [1]
accuracy_score on test dataset :  0.0
'''

图片

逻辑回归模型通过对输入特征进行线性加权求和,然后将结果通过一个sigmoid函数进行转换,得到样本属于正类的概率。当概率超过阈值时,模型将样本归为正类;否则,归为负类。

决策边界就是在特征空间中,将模型预测为正类和负类的样本分开的线或者超平面。对于二维特征空间,决策边界就是一条直线;对于多维特征空间,决策边界是一个超平面。参见原文:2024 年将使用的 10 大机器学习算法 (analyticsvidhya.com)

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

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

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

相关文章

常见的工业信号指示灯及按钮开关代表什么?如何辨认?

信号指示灯,是用灯光监视电路和电气设备工作或位置状态的器件。也是自动化设备中最直观,唯一的监视元器件。主要的作用是通常用于反映电路的工作状态(有电或无电)、电气设备的工作状态(运行、停运或试验)和…

小程序web-view无法打开该页面的解决方法

问题:开发者工具可以正常打开,正式上线版小程序使用 web-view 组件测试时提示:“无法打开该页面,不支持打开 https://xxxxxx,请在“小程序右上角更多->反馈与投诉”中和开发者反馈。” 解决方法:需要配…

市场拓展招聘:完整指南

扩大招聘业务会给你带来很多挑战,更不用说你已经在处理的问题了。助教专业人士每周花近13个小时为一个角色寻找候选人。此外,客户的需求也在不断变化,招聘机构之间的竞争也在加剧。毫无疑问,对增长有战略的方法会有很大的帮助。一…

jeecg导入excel 含图片(嵌入式,浮动式)

jeecgboot的excel导入 含图片(嵌入式,浮动式) 一、啰嗦二、准备三、 代码1、代码(修改覆写的ExcelImportServer)2、代码(修改覆写的PoiPublicUtil)3、代码(新增类SAXParserHandler&a…

【数学建模】——【python库】——【Pandas学习】

专栏:数学建模学习笔记 pycharm专业版免费激活教程见资源,私信我给你发 python相关库的安装:pandas,numpy,matplotlib,statsmodels 总篇:【数学建模】—【新手小白到国奖选手】—【学习路线】 第一卷:【数学…

总结一下Linux、Windows、Ubuntu、Debian、CentOS等到底是啥?及它们的区别是什么

小朋友你总是有很多问好 你是否跟我一样,不是计算机科班出身,很多东西都是拿着在用,并不知道为什么,或者对于它们的概念也是稀里糊涂的,比如今天说的这个。先简单描述下,我先前的疑问: Linux是…

layui+jsp项目中实现table单元格嵌入下拉选择框功能,下拉选择框可手动输入内容或选择默认值,修改后数据正常回显。

需求 table列表中的数据实现下拉框修改数据,当默认的下拉框不符合要求时,可手动输入内容保存。内容修改后表格显示修改后的值同时表格不刷新。 实现 layui框架下拉框组件只能选择存在的数据,不支持将输入的内容显示在input中的功能&#x…

【C++进阶9】异常

一、C语言传统的处理错误的方式 终止程序,如assert 如发生内存错误,除0错误时就会终止程序返回错误码 需要程序员自己去查找对应的错误 z如系统的很多库的接口函数都是通 过把错误码放到errno中,表示错误 二、C异常概念 异常:函…

传神论文中心|第14期人工智能领域论文推荐

在人工智能领域的快速发展中,我们不断看到令人振奋的技术进步和创新。近期,开放传神(OpenCSG)社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自的论…

steam搬砖

​   CS2/Steam游戏拆砖项目如何赚钱,利润在哪里?    1、利润主要来自于汇差。例如,今天美元的汇率是1美元7.3人民币,100美元730人民币。但事实上,通过某些特定渠道(如TB)充值100美元仅需55…

Meet AI4S 直播预告丨房价分析新思路:神经网络直击复杂地理环境中的空间异质性

近年来,房地产市场起起落落,房价已经成为了扰动居民幸福感的重要影响因素。大多数家庭都需要面对「买不买房、何时买房、在哪儿买房、买什么房」的艰难抉择,每一个问题的答案都在某种程度上与房价的波动息息相关。 近年来,我国各…

RocketMq源码解析九:刷盘机制及过期文件删除

一、刷盘机制 刷盘策略在不同时间进行刷写磁盘。RocketMQ的存储是基于JDK NIO的内存映射机制(MappedByteBuffer)的,消息存储首先将消息追加到内存,再根据配置的刷写磁盘 同步刷盘表示消息追加到内存后,立即将数据刷写到文件系统中。代码的调用链如下: submi…

【新版本来袭】ONLYOFFICE桌面编辑器8.1 —— 重塑办公效率与体验

文章目录 一、功能完善的PDF编辑器:重塑文档处理体验编辑文本插入和修改各种对象,如表格、形状、文本框、图像、艺术字、超链接、方程式等添加、旋转和删除页面添加文本注释和标注 二、幻灯片版式设计:创意展示的无限舞台三、改进从右至左显示…

OCR训练和C#部署英文字符训练

PaddleOCR是一个基于飞桨开发的OCR(Optical Character Recognition,光学字符识别)系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。以下是其优点: 高精度:PaddleOCR采用深度学习算法进行训练…

Web渗透:php反序列化漏洞

反序列化漏洞(Deserialization Vulnerability)是一种在应用程序处理数据的过程中,因不安全的反序列化操作引发的安全漏洞;反序列化是指将序列化的数据(通常是字节流或字符串)转换回对象的过程,如…

【MySQL备份】lvm-snapshot篇

目录 1.简介 1.1.如何工作 1.2.应用场景 1.3.注意事项 1.4.优缺点 2.为什么选择lvm快照备份? 3.创建LVM 3.1.操作流程 3.2.正常安装MySQL后进行备份 3.3.MySQL运行一段时间后进行备份 3.3.1.准备lvm及文件系统//先添加一块磁盘 3.3.2.将数据迁移到LVM …

MySQL学习(5):SQL语句之数据查询语言:DQL

1.DQL语法 select 字段列表 from 表名列表 #DQL是可以进行多表查询的 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数 2.基本查询(select) 2.1查询多字段 select 字段1,字段2,字段3,......fro…

基于Volov7的安全帽检测系统

1 项目介绍 1.1 摘要 随着工业化和城市化的迅猛推进,工作场所的安全管理愈发受到重视。安全帽作为保护工人头部安全的关键装备,其实时监测和检测的重要性不言而喻。本文提出并深入研究了基于YOLOv7算法的安全帽佩戴检测技术,该技术旨在实现…

Day.js

Day.js 是什么? Day.js是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。 Day.js中文网 为什么要使用Day.js ? 因为Day.js文件只有2KB左右,下载、解析和执行的JavaScript更少,为代码留下更…

作物检测:YOLOv8+SwanLab

1. 项目介绍 基于深度学习的作物检测通过精准管理和数据驱动决策,能够提高作物产量和质量,优化农业资源利用,推动农业自动化进程,从而保障粮食安全。目前,作物检测领域大多针对单类作物进行检测。因此,本项…