新冠肺炎–球重大公共卫生事件,美国是当前疫情最严重的国家,其感染人数与死亡人数居世界首位。目前以获取从2020.1.28-2020.9.9之间的数据,请利用所学知识,采用2020.1.28-2020.8.31的数据建立模型,并用9.1-9.9数据进行模型测试。
完成时间:约2020年10月25日

数据格式如下:
2020.1.28 0 5 0 0
2020.1.29 0 5 0 0
2020.1.30 1 6 0 0
2020.1.31 0 6 0 0

本图为预测2020年365天的回归曲线的预测值图形,今天写报告时,为10月25日,美国实际总确诊人数接近850万,print(linear_reg2.predict(poly_reg.fit_transform(predictarr0))[298],predictdaysdata[298]) 输出为[10264119.70637152] 2020.10.25,也即预测为1002万,相比较有着一定的差距。

使用较高阶数进行拟合,则短期内数据精准度较高,长期预测发生极大的数据波动:如下图

使用较低阶数进行拟合,则长期内数据精准度较高:如下图

源代码

#(1)
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from datetime import datetime
from datetime import timedelta
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
#import sysif __name__ == "__main__":io = r'C:\Users\x\Desktop\大数据\2\02.美国新冠肺炎疫情历史总数据9.9.xlsx'data = pd.read_excel(io, sheet_name = 0)lenofdata = len(data)arr0 = []arr1 = []arr2 = []arr3 = []arr4 = []daysdata = []predictdaysdata = []startdate = datetime.strptime("2020.1.01","%Y.%m.%d")for num in range(0,lenofdata-1):nowline = data.loc[num].valuesdateintext = datetime.strptime(nowline[0], '%Y.%m.%d')days = (dateintext-startdate).days#得出数据集中的日期距离2020.1.1的天数作为预测的因变量daysdata.append(nowline[0])arr0.append([days])arr1.append([nowline[1]])arr2.append([nowline[2]])arr3.append([nowline[3]])arr4.append([nowline[4]])predictarr0 = []for i in range(0,365):predictdaysdata.append((startdate+timedelta(days=i)).strftime("%Y.%m.%d"))predictarr0.append([i])poly_reg = PolynomialFeatures(degree=3)xarr = poly_reg.fit_transform(arr0)predictxarr = poly_reg.fit_transform(predictarr0)linear_reg1 = LinearRegression()linear_reg1.fit(xarr, arr1)linear_reg2 = LinearRegression()linear_reg2.fit(xarr, arr2)linear_reg3 = LinearRegression()linear_reg3.fit(xarr, arr3)linear_reg4 = LinearRegression()linear_reg4.fit(xarr, arr4)plt.rcParams['font.sans-serif']=['FangSong']plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(100,100))fig = plt.figure()  ax0 = fig.add_subplot(1,1,1)ax0.plot(daysdata, arr1, "o", label="新增",markersize =0.3 )ax0.plot(daysdata, linear_reg1.predict(poly_reg.fit_transform(arr0)), label="新增预测",alpha=0.5)plt.xticks("")plt.legend()#ax1 = fig.add_subplot(4,1,2)ax0.plot(daysdata, arr2,"o", label="总确诊",markersize =0.3 )ax0.plot(daysdata, linear_reg2.predict(poly_reg.fit_transform(arr0)), label="总确诊预测",alpha=0.5)plt.xticks("")plt.legend()#ax2 = fig.add_subplot(4,1,3)ax0.plot(daysdata, arr3,"o", label="治愈",markersize =0.3 )ax0.plot(daysdata, linear_reg3.predict(poly_reg.fit_transform(arr0)), label="治愈预测",alpha=0.5)plt.xticks("")plt.legend()#ax3 = fig.add_subplot(4,1,4)ax0.plot(daysdata, arr4,"o", label="死亡",markersize =0.3 )ax0.plot(daysdata, linear_reg4.predict(poly_reg.fit_transform(arr0)), label="死亡预测",alpha=0.5)plt.xticks(arr0[::50])plt.legend()#ax.plot(arr0,arr3,label="治愈")#ax.plot(arr0,arr4,label="死亡")plt.xticks(arr0[::50])plt.legend()plt.savefig('2.png',dpi=1500)#(2)# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from datetime import datetime
from datetime import timedelta
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
#import sysif __name__ == "__main__":io = r'C:\Users\x\Desktop\大数据\2\02.美国新冠肺炎疫情历史总数据9.9.xlsx'data = pd.read_excel(io, sheet_name = 0)lenofdata = len(data)arr0 = []arr1 = []arr2 = []arr3 = []arr4 = []daysdata = []predictdaysdata = []startdate = datetime.strptime("2020.1.01","%Y.%m.%d")for num in range(0,lenofdata-1):nowline = data.loc[num].valuesdateintext = datetime.strptime(nowline[0], '%Y.%m.%d')days = (dateintext-startdate).days#得出数据集中的日期距离2020.1.1的天数作为预测的因变量daysdata.append(nowline[0])arr0.append([days])arr1.append([nowline[1]])arr2.append([nowline[2]])arr3.append([nowline[3]])arr4.append([nowline[4]])predictarr0 = []for i in range(0,365):predictdaysdata.append((startdate+timedelta(days=i)).strftime("%Y.%m.%d"))predictarr0.append([i])poly_reg = PolynomialFeatures(degree=3)xarr = poly_reg.fit_transform(arr0)predictxarr = poly_reg.fit_transform(predictarr0)linear_reg1 = LinearRegression()linear_reg1.fit(xarr, arr1)linear_reg2 = LinearRegression()linear_reg2.fit(xarr, arr2)linear_reg3 = LinearRegression()linear_reg3.fit(xarr, arr3)linear_reg4 = LinearRegression()linear_reg4.fit(xarr, arr4)plt.rcParams['font.sans-serif']=['FangSong']plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(100,100))fig = plt.figure()  ax0 = fig.add_subplot(4,1,1)ax0.plot(daysdata, arr1, "o", label="新增",markersize =0.3 )ax0.plot(daysdata, linear_reg1.predict(poly_reg.fit_transform(arr0)), label="新增预测",alpha=0.5)plt.xticks("")plt.legend()ax1 = fig.add_subplot(4,1,2)ax1.plot(daysdata, arr2,"o", label="总确诊",markersize =0.3 )ax1.plot(daysdata, linear_reg2.predict(poly_reg.fit_transform(arr0)), label="总确诊预测",alpha=0.5)plt.xticks("")plt.legend()ax2 = fig.add_subplot(4,1,3)ax2.plot(daysdata, arr3,"o", label="治愈",markersize =0.3 )ax2.plot(daysdata, linear_reg3.predict(poly_reg.fit_transform(arr0)), label="治愈预测",alpha=0.5)plt.xticks("")plt.legend()ax3 = fig.add_subplot(4,1,4)ax3.plot(daysdata, arr4,"o", label="死亡",markersize =0.3 )ax3.plot(daysdata, linear_reg4.predict(poly_reg.fit_transform(arr0)), label="死亡预测",alpha=0.5)plt.xticks(arr0[::50])plt.legend()#ax.plot(arr0,arr3,label="治愈")#ax.plot(arr0,arr4,label="死亡")plt.xticks(arr0[::50])plt.legend()plt.savefig('1.png',dpi=1500)#(3)# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from datetime import datetime
from datetime import timedelta
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
#import sysif __name__ == "__main__":io = r'C:\Users\x\Desktop\大数据\2\02.美国新冠肺炎疫情历史总数据9.9.xlsx'data = pd.read_excel(io, sheet_name = 0)lenofdata = len(data)arr0 = []arr1 = []arr2 = []arr3 = []arr4 = []daysdata = []predictdaysdata = []startdate = datetime.strptime("2020.1.01","%Y.%m.%d")for num in range(0,lenofdata-1):nowline = data.loc[num].valuesdateintext = datetime.strptime(nowline[0], '%Y.%m.%d')days = (dateintext-startdate).days#得出数据集中的日期距离2020.1.1的天数作为预测的因变量daysdata.append(nowline[0])arr0.append([days])arr1.append([nowline[1]])arr2.append([nowline[2]])arr3.append([nowline[3]])arr4.append([nowline[4]])predictarr0 = []for i in range(0,365):predictdaysdata.append((startdate+timedelta(days=i)).strftime("%Y.%m.%d"))predictarr0.append([i])poly_reg = PolynomialFeatures(degree=3)xarr = poly_reg.fit_transform(arr0)predictxarr = poly_reg.fit_transform(predictarr0)linear_reg1 = LinearRegression()linear_reg1.fit(xarr, arr1)linear_reg2 = LinearRegression()linear_reg2.fit(xarr, arr2)linear_reg3 = LinearRegression()linear_reg3.fit(xarr, arr3)linear_reg4 = LinearRegression()linear_reg4.fit(xarr, arr4)plt.rcParams['font.sans-serif']=['FangSong']plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(100,100))fig = plt.figure()  ax0 = fig.add_subplot(1,1,1)#ax0.plot(daysdata, arr1, "o", label="新增",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg1.predict(poly_reg.fit_transform(predictarr0)), label="新增预测",alpha=0.5)plt.xticks("")plt.legend()#ax1 = fig.add_subplot(4,1,2)#ax0.plot(daysdata, arr2,"o", label="总确诊",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg2.predict(poly_reg.fit_transform(predictarr0)), label="总确诊预测",alpha=0.5)plt.xticks("")plt.legend()#ax2 = fig.add_subplot(4,1,3)#ax0.plot(daysdata, arr3,"o", label="治愈",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg3.predict(poly_reg.fit_transform(predictarr0)), label="治愈预测",alpha=0.5)plt.xticks("")plt.legend()#ax3 = fig.add_subplot(4,1,4)#ax0.plot(daysdata, arr4,"o", label="死亡",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg4.predict(poly_reg.fit_transform(predictarr0)), label="死亡预测",alpha=0.5)plt.xticks(predictarr0[::50])plt.legend()#ax.plot(arr0,arr3,label="治愈")#ax.plot(arr0,arr4,label="死亡")plt.xticks(predictarr0[::80])plt.legend()plt.savefig('3.png',dpi=1500)#5.# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from datetime import datetime
from datetime import timedelta
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
#import sysif __name__ == "__main__":io = r'C:\Users\x\Desktop\大数据\2\02.美国新冠肺炎疫情历史总数据9.9.xlsx'data = pd.read_excel(io, sheet_name = 0)lenofdata = len(data)arr0 = []arr1 = []arr2 = []arr3 = []arr4 = []daysdata = []predictdaysdata = []startdate = datetime.strptime("2020.1.01","%Y.%m.%d")for num in range(0,lenofdata-10):nowline = data.loc[num].valuesdateintext = datetime.strptime(nowline[0], '%Y.%m.%d')days = (dateintext-startdate).days#得出数据集中的日期距离2020.1.1的天数作为预测的因变量daysdata.append(nowline[0])arr0.append([days])arr1.append([nowline[1]])arr2.append([nowline[2]])arr3.append([nowline[3]])arr4.append([nowline[4]])predictarr0 = []for i in range(0,365):predictdaysdata.append((startdate+timedelta(days=i)).strftime("%Y.%m.%d"))predictarr0.append([i])poly_reg = PolynomialFeatures(degree=3)xarr = poly_reg.fit_transform(arr0)predictxarr = poly_reg.fit_transform(predictarr0)linear_reg1 = LinearRegression()linear_reg1.fit(xarr, arr1)linear_reg2 = LinearRegression()linear_reg2.fit(xarr, arr2)linear_reg3 = LinearRegression()linear_reg3.fit(xarr, arr3)linear_reg4 = LinearRegression()linear_reg4.fit(xarr, arr4)for i in range(0,10):print(linear_reg1.predict(poly_reg.fit_transform(predictarr0))[244+i] ,linear_reg2.predict(poly_reg.fit_transform(predictarr0))[244+i],   linear_reg3.predict(poly_reg.fit_transform(predictarr0))[244+i], linear_reg4.predict(poly_reg.fit_transform(predictarr0))[244+i], predictdaysdata[244+i])plt.rcParams['font.sans-serif']=['FangSong']plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(100,100))fig = plt.figure()  ax0 = fig.add_subplot(1,1,1)#ax0.plot(daysdata, arr1, "o", label="新增",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg1.predict(poly_reg.fit_transform(predictarr0)), label="新增预测",alpha=0.5)plt.xticks("")plt.legend()#ax1 = fig.add_subplot(4,1,2)#ax0.plot(daysdata, arr2,"o", label="总确诊",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg2.predict(poly_reg.fit_transform(predictarr0)), label="总确诊预测",alpha=0.5)plt.xticks("")plt.legend()#ax2 = fig.add_subplot(4,1,3)#ax0.plot(daysdata, arr3,"o", label="治愈",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg3.predict(poly_reg.fit_transform(predictarr0)), label="治愈预测",alpha=0.5)plt.xticks("")plt.legend()#ax3 = fig.add_subplot(4,1,4)#ax0.plot(daysdata, arr4,"o", label="死亡",markersize =0.3 )ax0.plot(predictdaysdata, linear_reg4.predict(poly_reg.fit_transform(predictarr0)), label="死亡预测",alpha=0.5)plt.xticks(predictarr0[::50])plt.legend()#ax.plot(arr0,arr3,label="治愈")#ax.plot(arr0,arr4,label="死亡")plt.xticks(predictarr0[::80])plt.legend()plt.savefig('3.png',dpi=1500)

多维线性拟合回归问题 python相关推荐

  1. 基于matlab数据线性拟合回归

    1 选题背景及意义 在统计学中,线性回归是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合.只有一个自变 ...

  2. python曲线拟合_python如何实现数据的线性拟合

    实验室老师让给数据画一张线性拟合图.不会matlab,就琢磨着用python.参照了网上的一些文章,查看了帮助文档,成功的写了出来 这里用到了三个库 import numpy as np import ...

  3. Python之数据分析(numpy线性模型、线性预测、线性拟合)

    文章目录 一.线性预测 二.线性拟合 线性模型分为两种:线性预测和线性拟合,这两种都可以起到预测走势和数据点的作用,当然,预测是存在一定误差的,因此这种预测图像仅供参考. 一.线性预测 1.基本概念 ...

  4. GEE(Python)逐像元线性拟合

    终于把GEE的python环境配置好了,很早就想尝试吴秋生老师的可视化库了[快乐] 这里贴一个GEE线性拟合的Python版(以60年的TerraClimate降水数据为例). #edited by ...

  5. python数据拟合怎么做的,python如何实现数据的线性拟合

    实验室老师让给数据画一张线性拟合图.不会matlab,就琢磨着用python.参照了网上的一些文章,查看了帮助文档,成功的写了出来 这里用到了三个库 import numpy as np import ...

  6. 使用Origin根据数据的二维图(单x,单y)进行线性拟合

    1.对上周画的二维图进行线性拟合,如下gif所示 2.修改拟合后的图像 3.对参数进行解释 第一行 Equation y=a+bx:          拟合的方程的形式是一元一次方程 第二行 Plot ...

  7. Python 散点图线性拟合_一文教你全面掌握用Python实现线性回归

    全文共4968字,预计学习时长15分钟或更长 本文旨在为读者理解和应用线性回归时提供参考.虽然线性回归算法很简单,但是只有少数人能真正理解其基本原则. 本文首先会深入挖掘线性回归理论,理解其内在的工作 ...

  8. Python实现部分地区男人身高/体重数据的线性拟合

    # Python实现部分地区男人身高/体重数据的线性拟合 import numpy as np import matplotlib.pyplot as plt from scipy import op ...

  9. python 物理实验_基于Python和梯度下降算法的物理实验数据一元线性拟合方法

    基于 Python 和梯度下降算法的物理实验数据一元线性拟 合方法 关毅铬 ; 程敏熙 [期刊名称] < <物理通报> > [年 ( 卷 ), 期] 2019(000)010 ...

最新文章

  1. 对象特性-----拷贝构造函数的调用
  2. Linux下用MRTG监控网络设备端口流量
  3. Leecode大厂热题100道系列题解
  4. Testng生成的测试报告乱码解决办法
  5. 清华团队研发,首款国产电力电子仿真软件来啦~已捐赠哈工大、海工大、清华使用!...
  6. iOS中POST请求
  7. html鼠标滚动效果代码,JS+CSS实现大气清新的滑动菜单效果代码
  8. Cordova(PhoneGap) 环境搭建与基础
  9. mysql rpm 安装多实例_MySQL搭建系列之多实例
  10. 【API进阶之路】破圈,用一个API代替10人内容团队
  11. 牛顿插值法C语言实现
  12. 阿里云Dataworks平台应用
  13. ook的matlab,【伪技术】基于OOK的语音信号的数字传输
  14. [转载]乔布斯十大经典语录
  15. 视界云联合创始人姜飞 荣获品途2017年NBI商业影响力新锐人物奖
  16. nunjucks.js模板渲染
  17. Android M应用启动流程分析
  18. DB2性能优化 – 如何通过db2优化工具提升SQL查询效率
  19. 科技新品 | 卡西欧紧凑型G-SHOCK;三星全新智能手机内存组合;佳能单张纸彩色印刷系统新品...
  20. centos 下查看本机公网IP

热门文章

  1. C语言基础篇 (二十五) 详解C语言第一大功臣:函数
  2. 封装vue 点赞或者收藏组件
  3. 诚之和:什么是异常值?如何在统计数据中查找异常值
  4. python中divmod函数的用法_Python中divmod函数的用法
  5. python中divmod的意思是_Python: divmod的神奇作用
  6. 不卷不pua,早9晚6,这个招聘深得我心
  7. 万能四码(0126版本)之分析
  8. 代驾:暴力的无本项目
  9. vc++操作excel2010
  10. 联想笔记本安装ubuntu,无线网卡被禁用的问题及解决方法