机器学习——多项式回归、拟合(疫情新增病例与道琼斯指数分析)

多项式回归定义公式及案例

文章目录

1、前言

之前写了一元和多元线性回归用来描述线性问题

机器学习:利用sklearn方法的一元线性回归模型(通过成绩预测绩点)_天海一直在的博客-CSDN博客_sklearn一元线性回归

机器学习:利用sklearn方法的多元线性回归模型(通过成绩预测绩点)_天海一直在的博客-CSDN博客_线性回归预测成绩

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

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 Y i ​=β0 ​+β1 ​X i ​+β2 ​X i 2 ​+…+βk ​X i k ​
例如二次曲线:
y = a t 2 + b t + c y=at^2+bt+c y =a t 2 +b t +c

3、案例代码

1、数据解析

首先有数据2020年2月24日至2020年4月30日疫情每日新增病例数和道琼斯指数,数据如下。

datenew_casesvolume2020/2/2423463994527302020/2/2526684499624082020/2/2630644082527882020/2/2743275688736672020/2/2844877960649212020/3/264305543646552020/3/384405524401682020/3/479204015758832020/3/597984014274992020/3/6133605073437392020/3/9155206297295052020/3/10175525559952472020/3/11278465509004312020/3/12219237775375262020/3/13525537287586172020/3/16546766819334542020/3/17584447034909702020/3/18715797574469292020/3/19988816776527532020/3/201109817463254912020/3/231515906945793712020/3/241441687017649132020/3/251806916984821352020/3/262204236136461492020/3/272257884980532912020/3/302220714757366012020/3/312621155073925842020/4/12758484413980522020/4/22773564401197682020/4/32830243582484732020/4/62414215124540392020/4/72379644991830852020/4/82765863991189772020/4/92849484625447922020/4/132304743382461092020/4/142798204279961992020/4/152578463754986082020/4/163164474167721312020/4/172848024580320762020/4/202408973588565282020/4/212425024209939632020/4/222631423069333732020/4/232684103346396142020/4/242938863331277612020/4/272238493373046702020/4/282387053409932992020/4/292470233962451662020/4/30260239416383852

2、绘制散点图

对于该数据我们通过绘制散点图可以看出,这是一个多项式回归的模型

import matplotlib.pyplot as plt
import xlrd
import numpy as np

ExcelFile = xlrd.open_workbook("sandian.xls")
sheet1 = ExcelFile.sheet_by_index(0)
x = sheet1.col_values(0)
y = sheet1.col_values(1)

x = np.matrix(x).reshape(48, 1)
y = np.matrix(y).reshape(48, 1)

plt.title("Epidemic and Dow Jones data analysis")
plt.xlabel("new cases")
plt.ylabel("Dow Jones Volume")
plt.plot(x, y, 'b.')
plt.show()

机器学习——多项式回归、拟合(疫情新增病例与道琼斯指数分析)

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

font = FontProperties(fname="SimHei.ttf", size=14)

x = pd.read_excel('last_data.xls')['new_cases']
y = pd.read_excel('last_data.xls')['volume']

z = np.polyfit(x, y, 3)

p = np.poly1d(z)
print(p)

yvals=p(x)

r2 = r2_score(y, yvals)
print('多项式拟合R方为:', r2)

peak = np.polyder(p, 1)
print(peak.r)

plot1 = plt.plot(x, y, '*', label='original values', color='red')
plot2 = plt.plot(x, yvals, '-', label='fitting values', color='blue',linewidth=2)

plt.xlabel('new_cases',fontsize=13, fontproperties=font)
plt.ylabel('Dow Jones Volume',fontsize=13, fontproperties=font)
plt.legend(loc="best")
plt.title('fitting diagram')
plt.show()

最后结果如下图

机器学习——多项式回归、拟合(疫情新增病例与道琼斯指数分析)
输出公式:
9.631e-08 x - 0.05356 x + 7169 x + 4.713e+08
多项式拟合R方为: 0.6462955787806361
[283148.64883622  87629.61932583]

Original: https://blog.csdn.net/tianhai12/article/details/124766652
Author: 天海一直在
Title: 机器学习——多项式回归、拟合(疫情新增病例与道琼斯指数分析)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/634874/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球