- 最小二乘法(Least Squares Method)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。在回归分析中,其目的是找到一条直线(对于简单线性回归而言)或者一个超平面(对于多元线性回归),使得观测值与预测值之间误差的平方和最小。
- 这种方法拟合直线相对于理论线性拟合直线、端点线性拟合直线、端点平移线性拟合直线和过零平移线性拟合直线,考虑了所有数据点的误差情况。它不是只关注端点或者特定条件,而是综合所有数据的信息,使直线尽可能地靠近所有的数据点,从而得到最小的误差值。但是由于当数据点数量n很大时,手动计算出最小二乘法的参数是非常消耗时间且容易出错的,这时就可以使用编程语言如python进行计算,大大降低了人为犯错的概率和人工计算成本。
- 本文代码使用最小二乘法公式:
- 注:最小二乘法还有不同计算公式,读者想了解可以自行查找。
import numpy as np #导入numpy库
import warnings # 告警库
warnings.filterwarnings(action='ignore') # 忽略告警
x=np.array([0,0.02,0.04,0.06,0.08,0.1]) #创建一个数组,输入自变量的取值(这里可以改变数组的大小)
y=np.array([-2.7,0.64,4.04,7.47,10.93,14.45])#创建一个数组,输入因变量的取值
n=6 #变量的个数
k1=n*np.sum(x*y) - np.sum(x)*np.sum(y) #计算k的分子(使用numpy库中的sum函数)
k2=n * np.sum(x**2) - np.sum(x)**2 #计算k的分母
b1=np.sum(x**2)*np.sum(y) - np.sum(x)*np.sum(x*y) #计算b的分子
b2=n * np.sum(x**2) - np.sum(x)**2 #计算b的分母
k = k1/k2
b = b1/b2
print(k,b) #打印k,b的值
print(f"y={k:.3f}x+({b:.3f})") #方程,并且使k,b保留三位小数
标签:直线,python,代码,最小,线性,拟合,np,sum,乘法
From: https://blog.csdn.net/m0_75005521/article/details/143532198