当前位置:   article > 正文

使用python进行一元线性函数拟合(包含程序及运行结果图)_python ax+by+cz=t拟合

python ax+by+cz=t拟合

使用python进行一元线性函数拟合

一元线性回归主要是使用最小二乘法计算得到斜率与截距的
计算后的公式: y = a x + b y = ax+b y=ax+b
其中:
a = ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 n ( x i − x ‾ ) 2 a=\frac {\sum_{i=1}^n(x^i-\overline{x})(y^i-\overline{y})}{\sum_{i=1}^n(x^i-\overline{x})^2} a=i=1n(xix)2i=1n(xix)(yiy)
b = y ‾ − a x ‾ b= \overline{y} - a\overline{x} b=yax
示例程序:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 4, 6, 8])
y = np.array([2, 5, 7, 8, 9])
x_mean = np.mean(x)  # x的均值
y_mean = np.mean(y)  # y的均值

denominator = 0.0  # 分母
numerator = 0.0  # 分子
for x_i, y_i in zip(x, y):
    numerator += (x_i - x_mean) * (y_i - y_mean)
    denominator += (x_i - x_mean) ** 2
a = numerator / denominator  # 求得a,斜率
b = y_mean - a * x_mean  # 求得b,截距

x_test = np.linspace(0, 10, 100)
y_predict = a * x_test + b
plt.scatter(x, y, color='b')
plt.plot(x_test, y_predict, color='r')
plt.xlabel('管子的长度', fontproperties='simHei', fontsize=15)
plt.ylabel('收费', fontproperties='simHei', fontsize=15)
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

运行结果

image-20220129232804416

当输入一个新的测试数据的时候,我们就能通过 y _ p r e d i c t = a × x _ t e s t + b y\_predict = a\times x\_test +b y_predict=a×x_test+b得到预测值

x_test = 7
y_predict_value = a * x_test + b
print(y_predict_value)
  • 1
  • 2
  • 3

输出为:8.74390243902439

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/683698
推荐阅读
相关标签
  

闽ICP备14008679号