机器学习【线性回归】

news2024/12/22 18:12:21

机器学习【线性回归】

回归预测的结果是离散型变量,身高和年龄

损失函数:SSE(误差平方和),RSS(残差平方和),误差越大越差

最小二乘法:通过最小化真实值和预测值之间的RSS来求解参数的方法

线性回归的损失函数是SSE(误差平方和)RSS(残差平方和)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2iQ648w-1686053924076)(C:\Users\Administrator\Desktop\b.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SHCYJBjE-1686053924078)(C:\Users\Administrator\Desktop\c.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9zTl6H1e-1686053924079)(C:\Users\Administrator\Desktop\d.png)]

1.线性回归

回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量。 决策树,随机森林,支持向量 机的分类器等分类算法的预测标签是分类变量,多以{0,1}来表示,而 无监督学习算法比如PCA,KMeans并不求解标签,注意加以区别。

回归算法源于统计学理论,它可能是机器学习算法中产生最早的算法之一,其在现实中的应用 非常广 泛,包括使用其他经济指标预测股票市场指数,根据喷射流的特征预测区域内的降水量,根据公司的广 告花费预测总销售额,或者根据有机物质中残留的碳-14的量来估计化石的年龄等等,只要一切基于特 征预测连续型变量的需求,我们都使用回归技术。

既然线性回归是源于统计分析,是结合机器学习与统计学的重要算法。通常来说,我们认为统计学注重 先验,而机器 学习看重结果,因此机器学习中不会提前为线性回归排除共线性等可能会影响模型的因 素,反而会先建立模型以查看 效果。模型确立之后,如果效果不好,我们就根据统计学的指导来排除可 能影响模型的因素。我们的课程会从机器学习的角度来为大家讲解回归类算法,如果希望理解统计学角 度的小伙伴们,各种统计学教材都可以满足你的需求。

回归类算法的数学相对简单。通常,理解线性回归可以有两种角度:矩阵的角度和代数的角度。几乎所 有机器学习的教材都是从代数的角度来理解线性回归的。相对的,在我们的课程中一直都缺乏比较系统 地使用矩阵来解读算法的角度,因此在本堂课中,我将全程使用矩阵方式(线性代数的方式)为大家展 现回归大家族的面貌。 学完这堂课之后,大家需要对线性模型有个相对全面的了解,尤其是需要掌握线性模型究竟存在什么样 的优点和问 题,并且如何解决这些问题。

2.SKlearn中的线性回归

sklearn中的线性模型模块是linear_model,我们曾经在学习逻辑回归的时候提到过这个模块。 linear_model包含了 多种多样的类和函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qJMpaQwH-1686053924080)(C:\Users\Administrator\Desktop\q.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gv0y2Ngc-1686053924081)(C:\Users\Administrator\Desktop\w.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PfQubEuZ-1686053924082)(C:\Users\Administrator\Desktop\e.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MEIlpQk-1686053924082)(C:\Users\Administrator\Desktop\r.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3evmApX6-1686053924083)(C:\Users\Administrator\Desktop\t.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MUZd0sn-1686053924084)(C:\Users\Administrator\Desktop\y.png)]

3.线性回归评判相关

3.1导包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score
plt.rcParams['font.sans-serif']=['SimHei']

3.2示例数据

x=np.array([1,2,3,4,5,6]).reshape(-1,1)
y=np.array([2,4,6,8,10,12])

3.3建模

model = LinearRegression()
model.fit(x,y)

3.4 预测

y_pred=model.predict(x)

3.5评估指标

# mse——均值平方误差
mse = mean_squared_error(y,y_pred)
# mae——平方绝对值误差
mae=mean_absolute_error(y,y_pred)
# rmse——均方根误差
rmse = np.sqrt(mse)
#r2(r方)——决定系数
r2 = r2_score(y,y_pred)

4.交叉验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0B8ueVn-1686053924085)(C:\Users\Administrator\Desktop\11.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iv0tfSNP-1686053924086)(C:\Users\Administrator\Desktop\22.png)]

5.网格搜索

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a56Oyahx-1686053924087)(C:\Users\Administrator\Desktop\33.png)]

6.KNN回归与线性回归对比

#导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsRegressor
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
#生成数据
x = np.linspace(0,2*np.pi,60)
y = np.sin(x)
plt.scatter(x,y)
#噪声数据
bias = np.random.random(30) - 0.5
y[::2] +=bias
plt.scatter(x,y)
#特征工程
X=x.reshape(-1,1)
# 建模
# knn
knn = KNeighborsRegressor(n_neighbors=3)
knn.fit(X,y)
#构建测试数据并预测
X_test = np.linspace(0,2*np.pi,45).reshape(-1,1)
y_=knn.predict(X_test)
# KNN模型结果可视化
plt.scatter(x,y,label='True Date',color='blue')
plt.plot(X_test,y_,label='KNN prediction',color='red')
plt.legend()
plt.show()
#使用线性回归进行预测
liner=LinearRegression()
liner.fit(X,y)
y2_ = liner.predict(X_test)
#对比分析两者结果 
plt.scatter(x,y,label='True Date',color='blue')
plt.plot(X_test,y_,label='KNN prediction',color='red')
plt.plot(X_test,y2_,label='liner prediction',color='black')
plt.legend()
plt.show()

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

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

相关文章

大数据:sparkSQL,历史,DataSet,DataFrame,sparkSession

大数据:sparkSQL 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学…

第十章:创建和管理表

第十章:创建和管理表 10.1:基础知识 一条数据存储的过程 ​ 存储数据是处理数据的第一步。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。 ​ 在MySQL中,一个完…

使用模板方法模式封装协议消息

目录 整体框架 模板方法介绍 关于本案例设计 c impl惯用法 cimpl惯用法好处 此案例impl惯用法的设计 关于序列化和反序列化 序列化和反序列化 本项目使用介绍 谷歌测试 谷歌测试环境 谷歌测试用例 完整源码地址 概述 本文介绍了从 设计模式之模板方法模式协议消…

面对CPU狂飙时的5步解决方案

现在企业对后端开发的要求越来越高,不仅要求我们会写代码,还要我们能够进行部署和运维! 项目上线并运行一段时间后,可能会发现部署所在的Linux服务器CPU占用过高,该如何排查解决? 本文用5步带你搞定线上CPU…

操作系统-进程和线程-同步、互斥、死锁

目录 一、同步互斥 二、互斥的实现方法 2.1软件实现 2.1.1单标志法 2.1.2双标志先检查 2.1.3双标志后检查 2.1.4Petersons算法 2.2硬件实现 2.2.1 TestAndSet指令 2.2.2 Swap指令 三、信号量机制 3.1整形变量 3.2 记录型变量 3.3用信号量实现进程互斥、同步、前驱关系…

Sui与F1甲骨文红牛车队达成合作

在近期达成的一项为期多年的合作协议中,甲骨文红牛车队将利用Sui网络开发,为粉丝带来全新的数字化体验。 甲骨文红牛车队的粉丝将很快在Sui网络上体验到他们最爱的一级方程式车队带来的激情。最近几个赛季一直统治着F1赛场的甲骨文红牛车队,与…

代码随想录算法训练营第五十三天 | 力扣 1143.最长公共子序列, 1035.不相交的线, 53. 最大子序和

1143.最长公共子序列 题目 1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符…

2022年值得关注的7个主要SD-WAN趋势

随着SD-WAN技术在2022年继续发展成熟,该技术在集成远程访问、自动化和多云连接方面的支持有望得到更多的改进。 软件定义WAN仍然是增强用户体验(UX),提高安全性,以及提供与基于云计算的应用程序的连接的一项关键技术。 随着SD-WAN的成熟&…

java设计模式之:原型模式

在我们的生活中,有很多例子,都是用到了原型模式,例如:我们去配钥匙的时候,肯定先要有一个原配钥匙才可以去配钥匙;《西游记》中孙悟空可以用猴毛根据自己的形象,复制(又称“克隆”或…

时间序列预测 | Matlab基于北方苍鹰算法优化随机森林(NGO-RF)与随机森林(RF)的时间序列预测对比

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab基于北方苍鹰算法优化随机森林(NGO-RF)与随机森林(RF)的时间序列预测对比 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %-----------…

【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(基础概念解析)

手把手零基础带你玩转大数据流式处理引擎Flink 前言介绍Apache Flink 的定义、架构及原理Flink应用服务Streams有限数据流和无限数据流的区别 StateTimeAPI Flink架构体系 Flink操作处理Flink 的应用场景Flink 的应用场景:Data Pipeline实时数仓搜索引擎推荐 Flink …

华为诺亚 VanillaNet

文章标题:《VanillaNet: the Power of Minimalism in Deep Learning》 文章地址:https://arxiv.org/abs/2305.12972 github地址:https://github.com/huawei-noah/VanillaNet 华为诺亚方舟实验室和悉尼大学,2023年5月代码刚开源的…

基于HAL库的STM32的单定时器的多路输入捕获测量脉冲频率(外部时钟实现)

目录 写在前面 一般的做法(定时器单通道输入捕获) 以外部时钟的方式(高低频都适用) 测试效果 写在前面 STM32的定时器本身有输入捕获的功能。可选择双端捕获,上升沿捕获或者是下降沿捕获。对应捕获频率来说,连续捕获上升沿或下降沿的时间间隔就是其脉…

手把手教你F103工程文件的创建并且通过protesu仿真验证创建工程文件的正确性(低成本)

目录 一、新建工程文件夹 二、新建一个工程框架 三、添加文件 四、仿真验证 五、仿真调试中遇到的问题并解决 一、新建工程文件夹 新建工程文件夹分为 2 个步骤:1,新建工程文件夹;2,拷贝工程相关文件。 1.新建工程文件 首先…

【04】STM32·HAL库开发-MDK5使用技巧 |文本美化 | 代码编辑技巧 | 查找与替换技巧 | 编译问题定位 | 窗口视图初始化

目录 1.文本美化(熟悉)1.1编辑器设置1.2字体和颜色设置1.3用户关键字设置1.4代码提示&语法检测1.5global.prop文件妙用 2.代码编辑技巧(熟悉)2.1Tab键的妙用2.2快速定位函数或变量被定义的地方2.3快速注释&快速取消注释 3…

python面向对象操作2(速通版)

目录 一、私有和公有属性的定义和使用 1.公有属性定义和使用 2.私有属性 二、继承 1.应用 2.子类不能用父类的私有方法 3.子类初始化父类 4.子类重写和调用父类方法 5.多层继承 6.多层继承-初始化过程 7.多继承基本格式 8.多层多继承时的初始化问题 9.多继承初始化…

云原生Docker Cgroups资源控制操作

资源控制 Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。 Cgroup 是 ControlGroups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如…

Node服务器-express框架

1 Express认识初体验 2 Express中间件使用 3 Express请求和响应 4 Express路由的使用 5 Express的错误处理 6 Express的源码解析 一、手动创建express的过程: 1、在项目文件的根目录创建package.json文件 npm init 2、下载express npm install express 3、基本…

kafka3

分区副本机制 kafka 从 0.8.0 版本开始引入了分区副本;引入了数据冗余 用CAP理论来说,就是通过副本及副本leader动态选举机制提高了kafka的 分区容错性和可用性 但从而也带来了数据一致性的巨大困难! 6.6.2分区副本的数据一致性困难 kaf…

多模态学习

什么是多模态学习? 模态 模态是指一些表达或感知事物的方式,每一种信息的来源或者形式,都可以称为一种模态 视频图像文本音频 多模态 多模态即是从多个模态表达或感知事物 多模态学习 从多种模态的数据中学习并且提升自身的算法 多…