线性回归预测

news2025/1/9 17:10:07

目录

1、线性回归

 2、R-Squared


1、线性回归

在机器学习和统计建模中,这种关系用于预测未来事件的结果

线性回归使用数据点之间的关系在所有数据点之间画一条直线

这条线可以用来预测未来的值

在机器学习中,预测未来非常重要。比如房价、股票等预测

Python 提供了一些方法来查找数据点之间的关系并绘制线性回归线。下面展示如何使用这些方法而不是通过数学公式。

在下面的示例中,x 轴表示车龄,y 轴表示速度。我们已经记录了 13 辆汽车通过收费站时的车龄和速度。让我们看看我们收集的数据是否可以用于线性回归

首先通过python绘制散点图如下

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

plt.scatter(x, y)
plt.show()

 然后导入 scipy 并绘制线性回归线

from scipy import stats    # 前面学习众数的时候用到

创建表示 x 和 y 轴值的数组:

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

执行一个方法,使用了 `scipy` 库中的 `stats` 模块中的 `linregress()` 函数对 `x` 和 `y` 数组进行了线性回归分析,并将分析结果保存在 5 个变量中,分别是 `slope`、`intercept`、`r`、`p` 和 `std_err`。

`slope`:回归系数,表示自变量 `x` 对因变量 `y` 的影响程度。它的值为回归直线的斜率,可以用来衡量 `x` 和 `y` 之间的线性关系强度。如果 `slope` 的值为正数,则表示 `x` 和 `y` 之间呈正相关关系;如果 `slope` 的值为负数,则表示 `x` 和 `y` 之间呈负相关关系;如果 `slope` 的值为 0,则表示 `x` 和 `y` 之间没有线性关系。

`intercept`:截距,表示回归直线和 y 轴的交点。它的值为回归直线在 y 轴上的截距,用于计算当 `x` 为 0 时,`y` 的预测值

`r`:相关系数(拟合度),表示 `x` 和 `y` 之间的相关性强度,取值范围为 [-1, 1]。它的值越接近 1 或 -1,表示 `x` 和 `y` 之间线性关系越强;如果 `r` 的值为 0,则表示 `x` 和 `y` 之间没有线性关系

`p`:p 值,表示回归系数是否显著。如果 `p` 的值小于预设的显著性水平(通常为 0.05),则表明回归系数具有显著性,即 `x` 对 `y` 的影响不是由于随机因素引起的

`std_err`:标准误差,表示回归系数的估计误差。它的值越小,表示回归系数的估计越准确

slope, intercept, r, p, std_err = stats.linregress(x, y)

创建一个使用 slope 和 intercept 值的函数返回新值。这个新值表示相应的 x 值将在 y 轴上放置的位置(说白了就是使用一次函数求变量y的值)

def myfunc(x):
  return slope * x + intercept

通过map(function, iterable, ...)函数迭代x数组,并将x数组中的每一个元素用于function函数。其中`map()` 函数返回的是一个迭代器,其中包含了对输入的可迭代对象中每个元素应用指定函数后得到的结果。具体来说,`map()` 函数会依次对输入的可迭代对象中的每个元素应用指定函数,然后将得到的结果依次存储在生成的迭代器中。

然后使用list函数将map函数中的迭代器转化为列表。这是因为这个迭代器包含了对原始可迭代对象中每个元素应用 `function` 函数后的结果。但是,迭代器只能逐个元素进行访问,而不能像列表一样进行切片、索引等操作。所以要使用list函数将map函数中的迭代器转化为列表(数组)

通过函数运行 x 数组的每个值。这将产生一个新的数组,其中的 y 轴具有新值

mymodel = list(map(myfunc, x))

绘制原始散点图

plt.scatter(x, y)

绘制线性回归线

plt.plot(x, mymodel)

plt.show()

上述总的代码如下和结果如下

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

 2、R-Squared

重要的是要知道 x 轴的值和 y 轴的值之间的关系有多好,如果没有关系,则线性回归不能用于预测任何东西

该关系用一个称为 r 平方(r-squared)的值来度量

r 平方值的范围是 0 到 1,其中 0 表示不相关,而 1 表示 100% 相关

打印上面的数据再线性回归中的拟合度 r,如果在正常范围内,表明存在某一种关系,但它不是完美的关系,但它表明我们可以在将来的预测中使用线性回归

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

使用上述线性回归线预测具有 50 年寿命的汽车速度如下

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

speed = myfunc(50)

print(speed)

速度为 15.54  ,基本符合正常认知

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

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

相关文章

Docker核心组件

Docker核心组件 -镜像 Docker Registry 镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。 镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一个或多个镜像…

UI自动化测试用例管理平台搭建

用到的工具:python3 django2 mysql RabbitMQ celery selenium python3和selenium这个网上很多教程,我不在这一一说明; 平台功能介绍: 项目管理:用于管理项目。每个项目可以设置多个环境,例如开发环境…

winpcap 发包工具

本工具主要用来进行网络协议的调试,主要方法是,对现场数据抓包,然后将数据包带回交给开发人员,开发人员将该数据包重新发送和处理,模拟现场环境以便于调试和分析。 (一)使用方法 命令行下输入s…

linux0.12-10-chr_drv

[466页] 第10章 字符设备驱动程序 466–10-1-总体功能 466–10-1-1-终端驱动程序基本原理 467–10-1-2-Linux支持的终端设备类型 468–10-1-3-终端基本数据结构 472–10-1-4-规范模式和非规范模式 473–10-1-5-控制台终端和串行终端设备 476–10-1-6-终端驱动程序接口 476–…

【微信小程序】如何获取用户手机号授权登录

一. 前置条件 目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体),也就是说只针对企业认证小程序开放。若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。在使用…

到底什么是CIDR(无类域间路由)?做网络的一定得懂这个术语!

CIDR(无类域间路由)是一种用于对互联网IP地址进行聚合和分配的技术。它通过改变IP地址的分配方式,有效地解决了IPv4地址空间不足的问题。 本文将详细介绍CIDR的原理、使用方法以及它对互联网的影响,还会针对CIDR出三道例题&#x…

使用SolVES 模型与多技术融合快速实现生态系统服务功能社会价值评估

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…

金融学学习笔记第3章

第3章 管理财务健康状况和业绩 一、财务报表的功能 财务报表有三个重要的经济功能: (1)向公司的所有者和债权人提供关于公司目前状况及过去财务表现的信息。 (2)为所有者及债权人设定经营目标,对管理层施加限制提供了便捷的方式。 (3)为财务计划提供了方便的模式。 二、…

【马蹄集】第十二周作业

第十二周作业 目录 MT2056 二阶前缀和MT2057 门票MT2058 最大的平均值MT2068 高数考试MT2069 等差 MT2056 二阶前缀和 难度:黄金    时间限制:1秒    占用内存:128M 题目描述 在一个直角坐标系上,有 n n n 个坐标上有元素值&…

发表计算机SCI期刊,有哪些建议? - 易智编译EaseEditing

要发SCI论文,首先得写一篇论文,然后再向SCI期刊投稿: 计算机SCI论文是一种重要的学术论文,需要遵循一定的写作规范和要求。以下是一些写作建议: 选择合适的标题和摘要。 标题应该简明扼要,能够准确反映论…

UE Http Server 插件说明

1. Create Http Server 创建Http服务器。 Port : 监听端口,范围 1 - 65535,要保证系统唯一,不然会监听失败。 2. Bind 绑定网页路由回调。 Target :HttpServer 对象 Http Path: 绑定路径,如 ”/index“ Http Verbs…

基于IMX8 实时ethercat的手机机器人方案设计

结构: 1、下述结构为操控手柄,用于采集人手运动信号,传递至上位机,对其他设备进行遥操控 2、手柄内含4个电机旋转副的手柄机械臂,内置16位分辨率旋转编码器记录角位移; 3、上位机连接手柄电机、器械电机…

【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题

博主:東方幻想郷 专栏分类:Java | 从入门到入坟 Java递归 ⭐ 递归的定义⭐ 递归的特点⭐ 递归应用场景⭐ 简单例子⭐ 递归练习题🌌 练习题模板🏴‍☠️ 练习题答案: ⭐ 递归的定义 🌟递归是一种在方法通过调…

使用echocollect e将西门子PLC数据转发至SQL Server数据库

一 背景 随着工业4.0和工业大数据的发展,越来越多的制造型企业开始应用大型数据库来收集和分析数据,以辅助生产运营的决策。在制造工厂中实时收集和分析设备数据能够优化生产流程、减少停机时间并提高效率。然而,这些必要的设备数据通常被“…

在线教育平台小程序,打造高效学习新模式

随着科技的不断发展和互联网的普及,线上教育已经成为了现代人们获取知识、提升自我、实现梦想的重要途径。伴随而来的是线上教育平台的极度竞争。如何才能在这个竞争激烈的市场中脱颖而出?构建一个高效的、符合学生需求的线上教育课堂小程序非常关键。 …

性能测试重要知识与TPS上不去原因分析,测试进阶之路卷起来...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 常见性能测试术语…

阿里P7晒出工资条,看完扎心了……

前几天,有位老铁私信我,说看到某95后学弟晒出阿里P7的工资单,他是真酸了…想狠补下技术,努力冲一把大厂。 为了帮到他,也为了大家能在最短的时间内做面试复习,我把软件测试面试系列都汇总在这一篇文章了。 …

基于OpenCV和PyQt5的跳绳计数器应用程序

基于OpenCV和PyQt5的跳绳计数器应用程序 介绍 本文将介绍一个基于OpenCV和PyQt5的跳绳计数器应用程序。该程序可以使用计算机摄像头来检测跳绳动作,并计算跳绳次数。本文将介绍程序的实现方法和实现细节,包括背景减除算法和轮廓检测算法的使用。 背景…

Linux(云计算)期末复习资料

1:linux概述 ​ Linux是一种自由、开放源代码的操作系统,它最初由芬兰的Linus Torvalds在1991年开发,目前已经成为世界上最流行的操作系统之一。Linux操作系统的特点是免费、稳定、安全、可定制、可移植性强、支持多任务、多用户等。 2&…

[VRTK4.0]安装VRTKv4Tilia软件包导入程序

学习目标: 演示如何从Unitv资源商店安装VRTKv4Tilia包导入器,以轻松访问VRTKv4Tilia包,这些包为构建XR体验提供了各种有用的功能. 简述: 推荐使用2022.2.11F1以上版本来进行VRTK使用,我们可以从Unity资产商店导入Tilia包管理器&am…