一元:仅有一个自变量
解释:一个因素只受到另一个因素的影响的规律
公式:02 一元线性回归之numpy实现 - 图1

1.准备数据

生成X轴序列

  1. import numpy as np
  2. t=np.arange(1,10,1)
  3. t

array([1, 2, 3, 4, 5, 6, 7, 8, 9])

生成Y轴序列

  1. y=0.9+t+np.sin(t)
  2. y
  1. array([ 2.74147098, 3.80929743, 4.04112001, 4.1431975 , 4.94107573,
  2. 6.6205845 , 8.5569866 , 9.88935825, 10.31211849])

2.可视化

用于数据探索:初步认定是不是一阶线性方程。

  1. import matplotlib.pyplot as plt
  2. plt.plot(t,y,'o')
  3. plt.show()

image.png

3.建模

  1. model=np.polyfit(t,y,deg=1)
  2. model

array([1.00053154, 1.11458778])
模型:02 一元线性回归之numpy实现 - 图3

4.预测

X值

  1. t2=np.arange(-2,12,0.5)
  2. t2
  1. array([-2. , -1.5, -1. , -0.5, 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. ,
  2. 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5,
  3. 9. , 9.5, 10. , 10.5, 11. , 11.5])

Y值

  1. y2predict=np.polyval(model,t2)
  2. y2predict
  1. array([-0.88647531, -0.38620954, 0.11405623, 0.61432201, 1.11458778,
  2. 1.61485355, 2.11511932, 2.61538509, 3.11565087, 3.61591664,
  3. 4.11618241, 4.61644818, 5.11671395, 5.61697973, 6.1172455 ,
  4. 6.61751127, 7.11777704, 7.61804281, 8.11830859, 8.61857436,
  5. 9.11884013, 9.6191059 , 10.11937167, 10.61963745, 11.11990322,
  6. 11.62016899, 12.12043476, 12.62070053])

可视化

  1. plt.plot(t,y,'o',t2,y2predict,'x')
  2. plt.show()

image.png

5.模型优化

参数调整:deg

  1. model=np.polyfit(t,y,deg=2) #
  2. model

array([0.08528185, 0.147713 , 2.67808844])
模型:02 一元线性回归之numpy实现 - 图5
image.png