最小二乘法概念和代码示例

最小二乘法

  • 最小二乘法( Least Squares Method,又称最小平方法),是一 种数学优化技术,求解机器学习算法的模型参数的常用方法之一
  • 通过最小化误差的平方和寻找数据的最佳函数匹配
  • 利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数 据与实际数据之间误差的平方和为最小
  • 最小二乘法还可用于曲线拟合
  • 下列是具体推导方法,利用偏导数算出参加a和b,假设y=ax+b:
    最小二乘法概念和代码示例_第1张图片
    最小二乘法概念和代码示例_第2张图片
    最小二乘法概念和代码示例_第3张图片下面是用代码对给出的一组x和y值,利用最小二乘法算出参数a,b,并画图显示模型和数据的拟合情况。
import numpy as np import matplotlib.pyplot as plt
#最小二乘法
def LSE(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]       
    sumXY += x[i]*y[i]        
    sumXX +=x[i]*x[i]    
    a = (n*sumXY - sumX*sumY) / (n*sumXX-sumX*sumX) #利用偏导数算出a
    b = (sumXX*sumY-sumX*sumXY) / (n*sumXX-sumX*sumX) #利用偏导数算出a    
    return a,b
xi = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
yi = [30,31.2,32.6,33.3,34.6,35.1,36.8,37.2,38.3,39.6,40.2,41.6,42.1,43.5,44.3]
print(len(xi),len(yi))
#用最小二乘法求出参数a,b
a,b = LSE(xi,yi)
print("y=%10.5fx + %10.5f" %(a,b))

#画出特征值和模型函数
x_show=np.linspace(0,15)
y_show=a*x_show+b
plt.scatter(xi,yi)
plt.plot(x_show,y_show,label="Standard")
plt.show()

拟合情况显示如下:

最小二乘法概念和代码示例_第4张图片

你可能感兴趣的:(人工智能,#,机器学习,#,数学基础,人工智能,算法,最小二乘法)