python 最小二乘回归 高斯核_从简单数学建模开始:08最小二乘准则的应用(附python代码)...
生活随笔
收集整理的這篇文章主要介紹了
python 最小二乘回归 高斯核_从简单数学建模开始:08最小二乘准则的应用(附python代码)...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模型擬合一般來說有這么三種:
這幾個原則各有各的適用范圍。其中最小二乘準則是比較容易計算的。接下來我將簡要的介紹最小二乘準則以及舉例說明如何用python實現。
最小二乘準則
定義:給定某種函數類型
和 個數據點 ,對整個數據點的極小化絕對偏差 ,極小化和數為 。擬合直線
如果我們要擬合的是直線,即
,計算過程如下:擬合冪函數
可化為線性擬合的非線性擬合
用python求解
我們發現如果要自己計算的話,要用到偏導數,無窮級數的知識。如果數據點很多的話,函數比較復雜的,計算是十分困難的,甚至是不可能的。于是想到可以使用計算機求解。
通用代碼如下:
# -*- coding: utf-8 -*-舉例
接著我用我的一篇文章中車輛停止舉例為例進行擬合,相關數據在該文章里。
相信未來:從簡單數學建模開始:05如何進行數學建模——以車輛停止距離模型為例?zhuanlan.zhihu.com子模型一:反應距離模型
import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.optimize import leastsq %pylab inline plt.rcParams['font.sans-serif']=['simhei'] plt.rcParams['axes.unicode_minus']=Falsedr = np.array([22,28,33,39,44,50,55,61,66,72,77,83,88]) v = np.array([20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80.]) db = np.array([20,28,40.5,52.5,72,92.5,118,148.5,182,220.5,266,318,376]) d = np.array([42,56,73.5,91.5,116,142.5,173,209.5,248,292.5,343,401,464])x = v y = drdef func(p):k = preturn y - k*xr = leastsq(func,[np.sum(dr)/np.sum(v)]) k = r[0] print('k=',k)plt.scatter(x,k*x,label = '擬合解') plt.plot(x,k*x) plt.scatter(x,y,label='觀測解') plt.plot(x,y) plt.xlabel('dr') plt.ylabel('v') plt.title('最小二乘法則應用') plt.legend() plt.show()這是擬合后的結果,k = 1.1040,之前的結果為k = 1.1016
子模型二:剎車距離模型
import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.optimize import leastsq %pylab inline plt.rcParams['font.sans-serif']=['simhei'] plt.rcParams['axes.unicode_minus']=Falsedr = np.array([22,28,33,39,44,50,55,61,66,72,77,83,88]) v = np.array([20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80.]) db = np.array([20,28,40.5,52.5,72,92.5,118,148.5,182,220.5,266,318,376]) d = np.array([42,56,73.5,91.5,116,142.5,173,209.5,248,292.5,343,401,464])x = v**2 y = dbdef func(p):k = preturn y - k*xr = leastsq(func,[np.sum(db)/np.sum(v**2)]) k = r[0] print('k=',k)plt.scatter(x,k*x,label = '擬合解') plt.plot(x,k*x) plt.scatter(x,y,label='觀測解') plt.plot(x,y) plt.xlabel('dr') plt.ylabel('v') plt.title('最小二乘法則應用') plt.legend() plt.show()這張圖擬合前和擬合后的差距還是挺大的。
總結
以上是生活随笔為你收集整理的python 最小二乘回归 高斯核_从简单数学建模开始:08最小二乘准则的应用(附python代码)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wringPi 初始化GPIO 为上拉_
- 下一篇: nrf52840 gpiote如何配置中