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

news2024/11/26 9:54:35

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.coloradmin.cn/o/1873249.html

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

相关文章

【python】pop()函数

python pop() ,如何在Python的列表或数组中移除元素 使用 pop() 从列表中删除元素 pop() 语法概述 pop() 方法的语法如下: list_name.pop(index)list_name:列表变量名;内置的 pop() 方法仅需要一个可选参数;可选参…

async异步函数

文章目录 异步函数(用 async 声明的函数)异步函数的返回值async/await 的使用异步函数的异常处理总结 感谢铁子阅读,觉得有帮助的话点点关注点点赞,谢谢! 异步函数(用 async 声明的函数) 异步函…

免疫防御和代谢控制十字路口的炎性小体

谷禾健康 人体的肠道粘膜内层形成物理屏障和免疫防御系统,以防止微生物入侵。当身体受到感染或细胞遭受损伤时,免疫系统会启动炎症反应来应对这些情况。炎症是对感染和组织损伤的一种急性反应,以限制对身体的伤害,这种反应是身体自…

Docker期末复习

云计算服务类型有: IaaS 基础设施及服务 PaaS 平台及服务 SaaS 软件及服务 服务类型辨析示例: IaaS 服务提供的云服务器软件到操作系统,具体应用软件自己安装,如腾讯云上申请的云服务器等;SaaS提供的服务就是具体的软件,例如微软的Office套件等。 云计算部署模式有: 私有云…

行业唯一!法大大斩获“数字可信服务——金牌奖”

近日,由BSI(英国标准协会)主办的第七届“万物互联 ∙ 智慧高峰”论坛暨第六届密码模块认证大会在上海成功举办,论坛上,法大大作为安全高效的电子合同智能签管平台,荣获BSI颁发的“数字可信服务——金牌奖”…

Python 语法基础一

1.变量 python 中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量…

esp8266 GPIO

功能综述 ESP8266 的 16 个通⽤ IO 的管脚位置和名称如下表所示。 管脚功能选择 功能选择寄存器 PERIPHS_IO_MUX_MTDI_U(不同的 GPIO,该寄存器不同) PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);PERIPHS_IO_MUX_为前缀。后面的…

求生之路史低入手 教你怎么使用求生之路创意工坊提高体验性

求生之路是一款抵御丧尸的第一人称射击游戏,四名幸存者联机配合,在现代的城市中,击败各种丧尸还有强大的变种人BOSS,虽然是十几年前的游戏,但是毫不夸张的说,游戏丝毫不过时,目前steam夏促&…

Vue项目生产环境的打包优化

Vue项目生产环境的打包优化 前言 在这篇文章我们讨论Vue项目生产环境的打包优化,并按步骤展示实际优化过程中的修改和前后对比。 背景 刚开始的打包体积为48.71M 优化 步骤一:删除viser-vue viser-vue底层依赖antv/g2等库一并被删除,…

javafx飞机大战

Javafx飞机大战 1.使用javafx库2.按下wasd控制我方战机移动3.按下k键 我方战机发射炮弹 4.我方战机不能飞出游戏边界5.敌方战机随机发射炮弹和移动6.地方战机有多个,地方战机存在多种类型7.按下空格键 游戏停止8.游戏实时显示分数9.我方实时显示被命中次数10.超过一定的命中次数…

【24医学顶刊】GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类

GANDALF:主动学习 图注意力变换器 变分自编码器,改善多标签图像分类 提出背景子解法1:多标签信息样本的选择子解法2:生成信息丰富且非冗余的合成样本 例子:胸部X射线图像分析传统方法的操作和局限GaNDLF方法的优势 工…

多用户挂售转卖竞拍闪拍商城系统后端PHP+前端UNIAPP源码

玩法简介 ①、后台可添加商品进行挂单 ②、后台设置场次以及场次开始时间 ③、用户抢单 ④、抢单以后可选择提货或者转售 ⑤、玩家寄售需按照后台设置百分比进行加价 ⑥、玩家寄售需支付手续费(余额支付、支付宝APP支付、支付宝H5支付、微信APP支付) ⑦、玩家提货可获得商品相应…

数据结构 —— 并查集

数据结构 —— 并查集 并查集并查集实现省份数量并查集的优化 今天我们来了解一下并查集: 并查集 并查集(Disjoint Set Union, DSU)是一种高效的数据结构,用于处理集合的合并(Union)和查询(Fi…

Linux应急响应靶机 2

一、靶机介绍 应急响应靶机-Linux2 前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!! 1,提交攻击者IP 2,提交攻击者修改的管理员密码(明文) 3,提交第一次Webshell的连接URL(http://xxx.xxx.xxx.…

使用MyBatis的动态SQL注解实现实体的CRUD操作

使用MyBatis的动态SQL注解实现实体的CRUD操作 1. 引言2. 准备工作2.1 创建数据表2.2 创建实体类 Book2.3 修改Mapper接口 BookMapper 3. 测试CRUD操作3.1 配置日志3.2 查询操作3.3 新增操作3.4 修改操作3.5 删除操作 4. 与MyBatis Plus的对比5. 动态SQL注解的适用场景5.1 动态查…

Python中相关软件安装

1. python安装 1.下载地址 https://www.python.org/downloads/2.选择安装版本 1. Anaconda安装 安装地址 -- 清华大学镜像站点 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/查看anaconda是否安装成功 2.conda安装好后,将镜像源修改为清华大学的镜像…

Python项目-文本语音转换器【附源码】

文本–>语音转换器 本项目是一个简单的从文本到语音这样一个转换器的图形用户界面应用,使用了Python的tkinter库来构建界面,以及pyttsx3库来执行转换。以下是对该项目代码的详细解释,后面会附上本项目的完整代码: 实现效果&am…

文本情绪指数与上证指数的VAR模型构建

大家好,我是带我去滑雪! 在前一篇文章中,笔者爬取了东方财富网上证指数股吧的495775条评论数据,并对文本进行了情感分析,基于自制的股票情感词典,使用了深度学习模型对爬取的文本数据进行分类标注&#xff…

24V 350W开关电源电路原理图+PCB工程文件 UC3843AD lm193芯片

资料下载地址:24V 350W开关电源电路原理图PCB工程文件 UC3843AD lm193芯片 1、原理图 2、PCB

算法题 — 接雨水

给定 n 给非负整数,表示每个宽度为 1 的柱子的高度图,计算按照此排列的柱子,下雨之后能能接到多少雨水。 输入:height [0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1] 输出:6 解释:上面是由数组 [0, 1, 0, 2, 1,…