多项式回归预测

news/2024/11/19 15:19:48/

目录

1、多项式回归

 2、R-Squared


1、多项式回归

如果在实际中数据点显然不适合线性回归(穿过数据点之间的直线),那么多项式回归可能是理想的选择

像线性回归一样,多项式回归使用变量 x 和 y 之间的关系来找到绘制数据点线的最佳方法

Python 有一些方法可以找到数据点之间的关系并画出多项式回归线。下面将展示如何使用这些方法而不是通过数学公式

在下面的例子中,注册了 18 辆经过特定收费站的汽车

我们已经记录了汽车的速度和通过时间(小时)

x 轴表示一天中的小时,y 轴表示速度

首先绘制散点图

import matplotlib.pyplot as pltx = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]plt.scatter(x, y)
plt.show()

结果如下

 导入所需模块和创建表示 x 和 y 轴值的数组

import numpy
import matplotlib.pyplot as pltx = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy 有一种方法可以让我们建立多项式模型

`numpy.polyfit(x, y, n)` 是 NumPy 库中的一个函数,用于根据给定的数据点拟合一个 n 次多项式模型。其中,`x` 和 `y` 分别是输入的数据点的自变量和因变量,`n` 是多项式的阶数(即次数)

`numpy.polyfit(x, y, n)` 函数返回的是一个多项式系数数组,这个数组中存储了拟合的多项式模型的各项系数

`numpy.poly1d()` 是 NumPy 库中的一个函数,用于根据多项式系数创建一个多项式对象。这个多项式对象可以用于计算多项式在某个点的取值,求导、积分等操作

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

然后指定行的显示方式,我们从位置 1 开始,到位置 22 结束

# 100 表示拟合的程度,通过实际调整来拟合曲线是否平滑
myline = numpy.linspace(1, 22, 100)

绘制原始散点图、画出多项式回归线、显示图表

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

上面的代码如下

import numpy
import matplotlib.pyplot as pltx = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))myline = numpy.linspace(1, 22, 100)plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

 2、R-Squared

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

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

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

Python 和 Sklearn 模块计算该值,我们只需要将 x 和 y 值提供给它

import numpy
from sklearn.metrics import r2_scorex = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))print(r2_score(y, mymodel(x)))

结果 0.94 表明存在很好的关系,我们可以在将来的预测中使用多项式回归

使用是上面的数据预测在晚上 17 点左右通过收费站的汽车的速度

`numpy.poly1d()` 是 NumPy 库中的一个函数,用于根据多项式系数创建一个多项式对象。这个多项式对象可以用于计算多项式在某个点的取值,求导、积分等操作

import numpy
from sklearn.metrics import r2_scorex = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))speed = mymodel(17)
print(speed)

 预测还是符合正常认知的


http://www.ppmy.cn/news/75780.html

相关文章

数字人入门文章速览

语音驱动三维人脸方法 OPPO 数字人语音驱动面部技术实践 【万字长文】虚拟人漫谈 Blendshape学习笔记 人脸重建速览,从3DMM到表情驱动动画 功能强大的python包(四):OpenCV 从Blendshapes到Animoji 3D人脸重建算法汇总 一、3D人脸重…

YOLO V3 SPP ultralytics 第三节:关于yolo 中cfg的网络配置信息和读取cfg配置文件

目录 1. 介绍 2. 关于yolo的cfg网络配置文件 2.1 关于卷积层 2.2 关于池化层 2.3 关于捷径分支shortcut 2.4 关于route 层 2.5 关于上采样层 2.6 关于yolo层 3. 解析cfg 文件 4. 代码 1. 介绍 根据 第二节 的步骤,生成了属于自己的 my_yolov3.cfg 配置…

spring boot 集成 swagger3

Swagger 3是一种开源的API描述工具,它可以帮助开发人员设计、构建、文档化和测试API。Swagger 3支持多种编程语言和框架,包括Java、Node.js、Python、Ruby等,并提供了许多集成工具和插件,例如Postman、Apigee等。 Swagger 3使用Op…

【C++】基础知识--输入/输出(5)

前面部分的示例程序几乎没有提供与用户的交互(如果有的话)。他们只是在屏幕上打印简单的值,但标准库提供了许多其他方式通过其输入/输出功能与用户交互。本节将简要介绍一些最有用的方法。 cin标准输入cout标准输出cerr标准错误(输…

生命的价值

“追求”才是人生的“奥林匹克”精神,是生命燃烧的火花。 生命不因为结局的美好才美好,生命却因为追求美好而美丽,生命的价值就在于对美好结局的追求。人生在追求中闪光,价值在追求中沉淀,生命在追求中丰沛&#xff0c…

文本三剑客正则表达式3

文章目录 文本三剑客&正则表达式31 awk工作原理2 awk的基本格式及其内置变量2.1 基本格式2.2 内置变量2.3 示例2.3.1 直接打印所有内容2.3.2 取每一行的第一列2.3.3 打印行号,及所有内容2.3.4 打印第三行2.3.5 打印2-4行2.3.6 打印第2行和第4行2.3.7 用正则表达…

最近最少使用(LRU, Least recently used)缓存算法_华为2023

思路 性能限制很高、数据量很大时&#xff0c;cin、cout肯定是不够快的。 &#xff08;1&#xff09;可以利用getchar()速度快的特性设计快读函数读取整数&#xff0c;可以做到用scanf()函数5倍的速度读入任意整数&#xff1a; #include<cstdio> // 仅正整数可用 #defi…

多线程基础(一)线程基础信息、synchronized 锁概念

1. 基本概念&#xff1a; 程序&#xff1a; 程序是一些保存在磁盘上的指令的有序集合&#xff0c;是静态的。程序包括&#xff1a;内存资源、IO资源、信号处理等。&#xff08;如&#xff1a;XX.exe&#xff09; 进程&#xff1a; 进程是程序执行的过程&#xff0c;包括了动态…