当前位置: 首页 > news >正文

机器学习:多项式拟合分析中国温度变化与温室气体排放量的时序数据

文章目录

    • 1、前言
    • 2、定义及公式
    • 3、案例代码
      • 1、数据解析
      • 2、绘制散点图
      • 3、多项式回归、拟合
      • 4、注意事项

1、前言

​ 当分析数据时,如果我们找的不是直线或者超平面,而是一条曲线,那么就可以用多项式回归来分析和预测。

2、定义及公式

​ 多项式回归可以写成:
Y i = β 0 + β 1 X i + β 2 X i 2 + . . . + β k X i k Y_{i} = \beta_{0} +\beta_{1}X_{i}+\beta_{2}X_{i}^2+...+\beta_{k}X_{i}^k Yi=β0+β1Xi+β2Xi2+...+βkXik
​ 例如二次曲线:
Y = a X + b X 2 + c Y=aX+bX^2+c Y=aX+bX2+c

3、案例代码

1、数据解析

​ 首先有1961年至2017年我国地表温度变化和温室气体排放量的时间序列数据,前十条数据如下。

tempemissions
0.2575635838102
-0.1426075180207
0.2886510697811
-0.0286946401541
0.0767421082166
0.187942541079
-0.2868374764636
-0.4148842570279
-0.229418514950

2、绘制散点图

​ 对于该数据我们先通过绘制散点图,这可以看出该数据适用于什么模型。

import matplotlib.pyplot as plt
import xlrd
import numpy as np
# 载入数据,打开excel文件
ExcelFile = xlrd.open_workbook("sandian.xls")
sheet1 = ExcelFile.sheet_by_index(0)
x = sheet1.col_values(0)
y = sheet1.col_values(1)
# 将列表转换为matrix
x = np.matrix(x).reshape(48, 1)
y = np.matrix(y).reshape(48, 1)# 划线y
plt.title("Epidemic and Dow Jones data analysis")
plt.xlabel("new cases")
plt.ylabel("Dow Jones Volume")
plt.plot(x, y, 'b.')
plt.show()

在这里插入图片描述

​ 上述使用xlrd方式不建议使用,简单了解即可,正常我们会使用下述更为方便且稳定的pandas来读取csv文件,这会大大简洁我们的代码并减少工作量。当然结果也是一样的。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pdx = pd.read_csv('china.csv')['emissions']
y = pd.read_csv('china.csv')['temp']
# 划线y
plt.title("temp and emission")
plt.xlabel("emissions change")
plt.ylabel("temp change")
plt.plot(x, y, 'b.')
plt.show()

​ 如图所示很明显,在排放量变化达到1.5(1e11)时,斜率发生了改变,因此我们可以判断这是一个多项式模型。

3、多项式回归、拟合

​ 通过散点图的趋势,我们首先选择拟合3次来防止过拟合和欠拟合。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.metrics import r2_score
from matplotlib.font_manager import FontProperties  # 导入FontPropertiesfont = FontProperties(fname="simhei.ttf", size=14)  # 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] =Falsex = pd.read_csv('china.csv')['emissions']
y = pd.read_csv('china.csv')['temp']# 进行多项式拟合(这里选取3次多项式拟合)
z = np.polyfit(x, y, 3) # 用3次多项式拟合# 获取拟合后的多项式
p = np.poly1d(z)
print(p)  # 在屏幕上打印拟合多项式# 计算拟合后的y值
yvals=p(x)# 计算拟合后的R方,进行检测拟合效果
r2 = r2_score(y, yvals)
print('多项式拟合R方为:', r2)# 计算拟合多项式的极值点。
peak = np.polyder(p, 1)
print(peak.r)# 画图对比分析
plot1 = plt.plot(x, y, '*', label='初始值', color='red')
plot2 = plt.plot(x, yvals, '-', label='训练值', color='blue',linewidth=2)plt.xlabel('温室气体排放量',fontsize=13, fontproperties=font)
plt.ylabel('温度变化',fontsize=13, fontproperties=font)
plt.legend(loc="best")
plt.title('中国温室气体排放量与地表温度变化的关系')
plt.show()

​ 最后结果如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-go17Atvf-1681182766850)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230411105218629.png)]

           3             2
3.002e-34 x - 1.351e-22 x + 2.284e-11 x - 0.2613
多项式拟合R方为: 0.7468687074304835
[1.50000065e+11+5.34488173e+10j 1.50000065e+11-5.34488173e+10j]

​ 我们发现,这并不符合我们的预期,因为温室气体排放量在1.5(1e11)时,散点图趋势有明显的凹陷,而使用三次拟合并不能让曲线拟合到散点上。所以我们将 z = np.polyfit(x, y, 4)中的3改为4,来进行四次拟合。
在这里插入图片描述

​ 这样就达到了我们的预期效果,并输出我们的多项式回归公式。

           4             3             2
1.702e-44 x - 6.273e-33 x + 6.634e-22 x - 9.696e-12 x + 0.03595
多项式拟合R方为: 0.7962406171380259
[1.60734484e+11 1.07514523e+11 8.24309615e+09]

​ 我们可以得到数学模型:
Y = 1.702 ∗ 1 0 − 44 X − 6.273 ∗ 1 0 − 33 X + 6.634 ∗ 1 0 − 22 X − 9.696 ∗ 1 0 − 12 X + 0.03595 Y=1.702*10^{-44}X -6.273*10^{-33}X + 6.634*10^{-22}X-9.696*10^{-12}X +0.03595 Y=1.7021044X6.2731033X+6.6341022X9.6961012X+0.03595

4、注意事项

from matplotlib.font_manager import FontProperties  # 导入FontProperties
font = FontProperties(fname="simhei.ttf", size=14)  # 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] =False

​ 这些代码用于显示汉字标题,这需要你的本机中有一个汉字字体文件,simhei.ttf或其他字体文件。

​ 如果需要引入,在第二行中指定文件路径。

相关文章:

机器学习:多项式拟合分析中国温度变化与温室气体排放量的时序数据

文章目录 1、前言2、定义及公式3、案例代码1、数据解析2、绘制散点图3、多项式回归、拟合4、注意事项 1、前言 ​ 当分析数据时,如果我们找的不是直线或者超平面,而是一条曲线,那么就可以用多项式回归来分析和预测。 2、定义及公式 ​ 多项…...

一个 24 通道 100Msps 逻辑分析仪

这是一个创建非常便宜的逻辑分析仪的项目,但其功能可与昂贵的商业分析仪相媲美。该分析仪可以以每秒 1 亿个样本的最高速度对多达 24 个通道进行采样,并且可以通过单个通道中的极性变化或多达 16 个通道形成的模式来触发。 该项目不仅包含硬件&#xff0…...

使用Process Explorer和Dependency Walker排查C++程序中dll库动态加载失败问题

目录 1、exe主程序启动时的库加载流程说明 2、加载dll库两种方式 2.1、dll库的隐式引用...

网工Python:如何使用Netmiko的SCP函数进行文件传输?

在网络设备管理中,传输配置文件、镜像文件等是经常需要进行的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些用于传输文件的函数,其中包括SCP(Secure Copy Protocol)函数。本文将介…...

题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和--不能完全通过,最好情况通过67.

原题链接: 题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和 https://www.dotcpp.com/oj/problem3166.html 致歉 害,首先深感抱歉,这道题还是没有找到很好的解决办法。目前最好情况就是67分。 这道题先这样跳过吧,当然以后还…...

ChatGPT- OpenAI 的 模型(Model) 介绍

ChatGPT的火爆程度大家都知道了,该章节我们来了解一下 ChatGPT 一个关键概念 - 模型(Model)。主要是为大家介绍一下在 OpenAI 中,究竟有哪些模型可以使用。 在后续的章节,我们会分单独的小章节逐一的为大家介绍各个不同模型的调用以及接口参…...

X 态及基于 VCS 的 X-Propagation 检测

🔥点击查看精选 IC 技能树系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#…...

数据库之事务隔离级别详解

事务隔离级别详解 一、事务的四大特性(ACID)1. 原子性(atomicity):2. 一致性(consistency):3. 隔离性(isolation):4. 持久性(durability): 二、事务的四种隔离级别1. 读未提交(Read uncommitted)&#xff1…...

守护进程、僵尸进程、孤儿进程

守护进程、僵尸进程、孤儿进程 守护进程(Daemon Process) 定义 守护进程又称Daemon进程(精灵进程),是Linux中的后台服务进程。 它的生命周期较长,通常独立于控制终端并且周期性地执行某种任务或者等待处…...

软件设计师笔记

软件设计师笔记 计算机组成与体系结构 数据的表示、计算机结构、Flynn分类法、CISC与RISC、流水线技术、存储系统、总线系统、可靠性、校验码 1. 数据的表示 (一)进制转换 R进制转十进制使用按权展开法: 十进制转R进制使用短除法 二进制…...

4_用dockerfile制作镜像

Docker 镜像原理 思考: Docker 镜像本质是什么? Docker 中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个个G? Docker 中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB&#xff…...

肝一肝设计模式【四】-- 建造者模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 文章目录 系列文章目录前言一、什么是建造者模式二、举个栗子三、静态内部类写法四、开源框…...

从设计到产品

从设计到产品 最近上的一些课的笔记,从 0 开始设计项目的角度去看产品。 设计系统 设计系统(design system) 不是 系统设计(system design),前者更偏向于 UI/UX 设计部分,后者更偏向于实现部分。 个人觉得,前端开发与 UI/UX 设…...

《疯狂Python讲义》值传递的细节

函数的参数包含着整个程序的规范性,之前还是没有那么去注意重要的细节,读完书中函数值传递篇章,还是有所收获的。 参数有两种形式,一种是形参一种是实参,形参可以理解为实参的载体,函数当中的关键词也是描…...

【7. ROS 中的 IMU 惯性测量单元消息包】

欢迎大家阅读2345VOR的博客【6. 激光雷达接入ROS】🥳🥳🥳 2345VOR鹏鹏主页: 已获得CSDN《嵌入式领域优质创作者》称号👻👻👻,座右铭:脚踏实地,仰望星空&#…...

pcie m.2固态硬盘装机后无法识别到启动盘

1、第一种情况《系统版本过低》 原因: 使用m.2固态硬盘的电脑,最好安装iwn8.1以上的系统,因为win7系统及其win xp系统 没有自带NVME驱动。 搞定办法: 比较简单的方式就是直接开运行快启动u盘启动盘制作工具将系统升级到win10系…...

Java Web应用开发 ——第四章:JavaBean技术测验

一.单项选择题&#xff08;共13题,55.9分&#xff09; 1 在 JSP 中调用 JavaBean 时不会用到的标记是&#xff1a;&#xff08; &#xff09; A、 < jsp:javabean> B、 < jsp:useBean> C、 < jsp:setProperty> D、 < jsp:getProperty> 正确答案&a…...

CTF权威指南 笔记 -第二章二进制文件- 2.4 -动态链接

目录 静态文件的缺点 动态链接 位置无关代码 延迟绑定 _dl_runtime_reslove 函数定义 深入审视 静态文件的缺点 随着可执行文件的增加 静态链接带来的浪费空间问题就会愈发严重 如果大部分可执行文件都需要glibc 那么在链接的时候就需要把 libc.a链接进去 如果一个libc…...

C++:计算机操作系统:多线程:高并发中的线程

高并发中的线程 一切要从CPU说起PC 程序计数器从CPU到操作系统从进程到线程 从这篇开始&#xff0c;我将会开启高性能&#xff0c;高并发系列&#xff0c;本篇是给系列的开篇&#xff0c;主要关注 多线程以及线程池。 一切要从CPU说起 你可能会有疑问&#xff0c;讲多线程为何…...

大数据Doris(十一):Aggregate 数据模型

文章目录 Aggregate 数据模型 一、导入数据聚合 二、保留明细数据...

osg::Drawable类通过setDrawCallback函数设置回调函数的说明

osg::Drawable类可以通过该类的setDrawCallback函数设置回调函数类对象。被设置的回调类对象必须从osg::Drawable::DrawCallback类派生&#xff0c;并重写drawImplementation函数&#xff0c;以实现自己特定的需求。这个回调函数在每次帧事件中都会被调用(如&#xff1a;在帧的…...

Python基础合集 练习17(类与对象)

class Dog: pass papiDog() print(papi) print(type(papi)) 构建方法 创建类过后可以定义一个特殊的方法。在python中构建方法是__init__(),init()必须包含一个self参数 class pig(): #def__init__(self) -> None&#xff1a; print(‘你好’) pipgpig() 属性和方法 cl…...

再多猜一次就爆炸(小黑子误入)

目录 猜数字游戏 游戏设计思路 1.电脑随机生成一个数 2.猜数字 3.输入我是ikun&#xff0c;泰裤辣! 否则电脑将在一分钟后关机 游戏运行效果 源码 代码分析 代码实现关键语句 strcmp() rand()与srand() 时间戳time() 寄语 猜数字游戏 游戏设计思路 1.电脑随机生…...

图像超分辨率简单介绍

文章目录 图像超分辨率简单介绍什么是图像超分辨率&#xff1f;常见的图像超分辨率算法插值算法基于边缘的图像重建算法局部线性嵌入&#xff08;LLE&#xff09;拉普拉斯正则化 基于深度学习的超分辨率算法超分辨率CNN超分辨率GAN 步骤1. 收集数据2. 选择算法3. 训练模型4. 测…...

【Liunx】进程的程序替换——自定义编写极简版shell

目录 进程程序替换[1~5]1.程序替换的接口&#xff08;加载器&#xff09;2.什么是程序替换&#xff1f;3.进程替换的原理4.引入多进程5.系列程序替换接口的详细解析&#xff08;重点&#xff01;&#xff09; 自定义编写一个极简版shell[6~8]6.完成命令行提示符7.获取输入的命令…...

c++标准模板(STL)(std::array)(三)

定义于头文件 <array> template< class T, std::size_t N > struct array;(C11 起 std::array 是封装固定大小数组的容器。 此容器是一个聚合类型&#xff0c;其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数组…...

c#笔记-创建一个项目

创建一个项目 创建控制台程序 在你安装完成Visual Studio后打开它&#xff0c;你会的到一个启动窗口 点击创建新项目&#xff0c;选择右上角c#的没有Framework的控制台应用。 项目名称&#xff0c;位置自己随意。 目标框架选择NET7.0。 项目创建完成后应该你的界面应该类似…...

Photoshop如何使用图像调色之实例演示?

文章目录 0.引言1.将一张偏冷调的图像调整成暖调2.将图像调整成不同季节色彩倾向3.变换花朵的颜色4.创建人像轮廓风景5.修饰蓝天白云6.调换花草颜色 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对PS进行了学习&#xff0c;本文通过《Photoshop2021入门教程》及其配…...

IDEA中使用Git提交代码提示:您即将把CRLF行分隔符提交到Gt仓库。 建议将core.autocrlf Git特性设置为trUe,以免发生行分隔符问题。

IDEA中使用Git提交代码提示&#xff1a;您即将把CRLF行分隔符提交到Gt仓库。 建议将core.autocrlf Git特性设置为trUe,以免发生行分隔符问题。 问题背景&#xff1a; 在IDEA中&#xff0c;使用Git提交代码到远程仓库时&#xff0c;结果弹出一个警告窗口 问题原因&#xff1a; …...

ArduPilot之开源代码LibrarySketches设计

ArduPilot之开源代码Library&Sketches设计 1. 简介1.1 Core libraries1.2 Sensor libraries1.3 Other libraries 2. 源由3. Library Sketches设计3.1 设计框架3.2 Example Sketches3.3 AP_Common Sketches3.3.1 配置sitl环境3.3.2 编译AP_Common3.3.3 运行AP_Common3.3.4 代…...

做p2p网站的公司/东莞做一个企业网站

知识章节参考&#xff1a;【六】Java面向对象...

网站建设公司 网络服务/最新app推广项目平台

2019年要看的书&#xff0c;看完做记录转载于:https://www.cnblogs.com/knuzy/p/10325517.html...

自己做网站stri/域名备案

procomm plus 的基本使用方法 1 串口脚本有些串口工具&#xff08;例如串口调试助手&#xff09;有定时发送功能&#xff0c;但只能发送一条固定的命令。我需要发送几百条命令&#xff0c;又懒得写程序&#xff0c;就希望找一个可以执行串口脚本的工具。然后我找到了procomm pl…...

本地旅游网站模版/苏州百度推广公司地址

我知道我迟早是要踏上了后台测试之路的&#xff0c;只是没想到来的这么突然。新接手了一个项目&#xff0c;在第一版发出后&#xff0c;产品需要做运营活动拉量&#xff0c;因为我担心突然的流量涌入是否会对后台造成压力呢&#xff1f;因此决定做一下压测&#xff1a; 下面就一…...

hao123手机浏览器/天天seo百度点击器

https://blog.csdn.net/xqhrs232/article/details/13507543 2种方法&#xff1a;1&#xff1a;在PCB中进入ECO模式-选择要更新的元件-点击change component图标-&#xff08;选中元件后&#xff09;右键点击元件-在弹出的菜单中选择libraby browse-勾选update part type from l…...

加盟餐饮网站建设/外贸网站哪个比较好

1、修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2、创建数据库时&#xff0c;指定数据库的字符编码 mysql> create database mydb character set utf8 ; 3、查看mysql数据库的字符编码 mysql> show variables like character%; //查询当前my…...