版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36811967/article/details/84309546
公式
代码
# -*- coding:utf-8 -*-
def least_square(x,y):
n = len(x)
sumX , sumY, sumXY, sumXX =0, 0, 0, 0
for i in range(0,n):
sumX += x[i]
sumY += y[i]
sumXX += x[i]*x[i]
sumXY += x[i]*y[i]
mean_x = sumX / n
mean_y = sumY / n
a = (n*sumXY - sumX*sumY)/(n*sumXX - sumX*sumX)
b = mean_y - a * mean_x
return a, b
xi = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
yi = [10, 11.5, 12, 13, 14.5, 15.5, 16.8, 17.3, 18, 18.7]
a, b = least_square(xi, yi)
print("y = %10.5fx + %10.5f" % (a, b))
Reference
https://zh.wikipedia.org/wiki/最小二乘法
https://blog.csdn.net/wangyangzhizhou/article/details/60133958