最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

最小二乘法及其python實(shí)現(xiàn)詳解

 更新時(shí)間:2020年02月24日 12:38:58   作者:yhao浩  
今天小編就為大家分享一篇最小二乘法及其python實(shí)現(xiàn)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

最小二乘法Least Square Method,做為分類回歸算法的基礎(chǔ),有著悠久的歷史(由馬里·勒讓德于1806年提出)。它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合。其他一些優(yōu)化問題也可通過最小化能量或最大化熵用最小二乘法來表達(dá)。

那什么是最小二乘法呢?別著急,我們先從幾個(gè)簡(jiǎn)單的概念說起。

假設(shè)我們現(xiàn)在有一系列的數(shù)據(jù)點(diǎn) ,那么由我們給出的擬合函數(shù)h(x)得到的估計(jì)量就是 ,那么怎么評(píng)估我們給出的擬合函數(shù)與實(shí)際待求解的函數(shù)的擬合程度比較高呢?這里我們先定義一個(gè)概念:殘差 , 我們估計(jì)擬合程度都是在殘差的基礎(chǔ)上進(jìn)行的。下面再介紹三種范數(shù):

• ∞-范數(shù):殘差絕對(duì)值的最大值 ,即所有數(shù)據(jù)點(diǎn)中殘差距離的最大值

• 1-范數(shù):絕對(duì)殘差和 ,即所有數(shù)據(jù)點(diǎn)殘差距離之和

• 2-范數(shù):殘差平方和

前兩種范數(shù)是最容易想到,最自然的,但是不利于進(jìn)行微分運(yùn)算,在數(shù)據(jù)量很大的情況下計(jì)算量太大,不具有可操作性。因此一般使用的是2-范數(shù)。

說了這么多,那范數(shù)和擬合有什么關(guān)系呢?擬合程度,用通俗的話來講,就是我們的擬合函數(shù)h(x)與待求解的函數(shù)y之間的相似性。那么2-范數(shù)越小,自然相似性就比較高了。

由此,我們可以寫出最小二乘法的定義了:

對(duì)于給定的數(shù)據(jù) ,在取定的假設(shè)空間H中,求解h(x)∈H,使得殘差 的2-范數(shù)最小,即

從幾何上講,就是尋找與給定點(diǎn) 距離平方和最小的曲線y=h(x)。h(x)稱為擬合函數(shù)或者最小二乘解,求解擬合函數(shù)h(x)的方法稱為曲線擬合的最小二乘法。

那么這里的h(x)到底應(yīng)該長(zhǎng)什么樣呢?一般情況下,這是一條多項(xiàng)式曲線:

這里h(x,w)是一個(gè)n次多項(xiàng)式,w是其參數(shù)。

也就是說,最小二乘法就是要找到這樣一組 ,使得 最小。

那么如何找到這樣的w,使得其擬合函數(shù)h(x)與目標(biāo)函數(shù)y具有最高擬合程度呢?即最小二乘法如何求解呢,這才是關(guān)鍵啊。

假設(shè)我們的擬合函數(shù)是一個(gè)線性函數(shù),即:

(當(dāng)然,也可以是二次函數(shù),或者更高維的函數(shù),這里僅僅是作為求解范例,所以采用了最簡(jiǎn)單的線性函數(shù))那么我們的目標(biāo)就是找到這樣的w,

這里令 為樣本 的平方損失函數(shù)

這里的Q(w)即為我們要進(jìn)行最優(yōu)化的風(fēng)險(xiǎn)函數(shù)。

學(xué)過微積分的同學(xué)應(yīng)該比較清楚,這是一個(gè)典型的求解極值的問題,只需要分別對(duì) 18 求偏導(dǎo)數(shù),然后令偏導(dǎo)數(shù)為0,即可求解出極值點(diǎn),即:

接下來只需要求解這個(gè)方程組即可解出w_i 的值

============ 分割分割 =============

上面我們講解了什么是最小二乘法,以及如何求解最小二乘解,下面我們將通過Python來實(shí)現(xiàn)最小二乘法。

這里我們把目標(biāo)函數(shù)選為y=sin(2πx),疊加上一個(gè)正態(tài)分布作為噪音干擾,然后使用多項(xiàng)式分布去擬合它。

代碼:

# _*_ coding: utf-8 _*_
# 作者: yhao
# 博客: http://blog.csdn.net/yhao2014
# 郵箱: yanhao07@sina.com
 
import numpy as np # 引入numpy
import scipy as sp
import pylab as pl
from scipy.optimize import leastsq # 引入最小二乘函數(shù)
 
n = 9 # 多項(xiàng)式次數(shù)
 
 
# 目標(biāo)函數(shù)
def real_func(x):
 return np.sin(2 * np.pi * x)
 
 
# 多項(xiàng)式函數(shù)
def fit_func(p, x):
 f = np.poly1d(p)
 return f(x)
 
 
# 殘差函數(shù)
def residuals_func(p, y, x):
 ret = fit_func(p, x) - y
 return ret
 
 
x = np.linspace(0, 1, 9) # 隨機(jī)選擇9個(gè)點(diǎn)作為x
x_points = np.linspace(0, 1, 1000) # 畫圖時(shí)需要的連續(xù)點(diǎn)
 
y0 = real_func(x) # 目標(biāo)函數(shù)
y1 = [np.random.normal(0, 0.1) + y for y in y0] # 添加正太分布噪聲后的函數(shù)
 
p_init = np.random.randn(n) # 隨機(jī)初始化多項(xiàng)式參數(shù)
 
plsq = leastsq(residuals_func, p_init, args=(y1, x))
 
print 'Fitting Parameters: ', plsq[0] # 輸出擬合參數(shù)
 
pl.plot(x_points, real_func(x_points), label='real')
pl.plot(x_points, fit_func(plsq[0], x_points), label='fitted curve')
pl.plot(x, y1, 'bo', label='with noise')
pl.legend()
pl.show()

輸出擬合參數(shù):

圖像如下:

從圖像上看,很明顯我們的擬合函數(shù)過擬合了,下面我們嘗試在風(fēng)險(xiǎn)函數(shù)的基礎(chǔ)上加上正則化項(xiàng),來降低過擬合的現(xiàn)象:

為此,我們只需要在殘差函數(shù)中將lambda^(1/2)p加在了返回的array的后面

regularization = 0.1 # 正則化系數(shù)lambda
 
 
# 殘差函數(shù)
def residuals_func(p, y, x):
 ret = fit_func(p, x) - y
 ret = np.append(ret, np.sqrt(regularization) * p) # 將lambda^(1/2)p加在了返回的array的后面
 return ret

輸出擬合參數(shù):

圖像如下:

很明顯,在適當(dāng)?shù)恼齽t化約束下,可以比較好的擬合目標(biāo)函數(shù)。

注意,如果正則化項(xiàng)的系數(shù)太大,會(huì)導(dǎo)致欠擬合現(xiàn)象(此時(shí)的懲罰項(xiàng)權(quán)重特別高)

如,設(shè)置regularization=0.1時(shí),圖像如下:

此時(shí)明顯欠擬合。所以要慎重進(jìn)行正則化參數(shù)的選擇。

以上這篇最小二乘法及其python實(shí)現(xiàn)詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)彈球小游戲的示例代碼

    Python實(shí)現(xiàn)彈球小游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)簡(jiǎn)單的彈球小游戲,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2022-11-11
  • Python Django框架介紹之模板標(biāo)簽及模板的繼承

    Python Django框架介紹之模板標(biāo)簽及模板的繼承

    今天給大家?guī)鞵ython Django框架的相關(guān)知識(shí),文中對(duì)模板標(biāo)簽及模板的繼承介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • PyTorch使用GPU訓(xùn)練的兩種方法實(shí)例

    PyTorch使用GPU訓(xùn)練的兩種方法實(shí)例

    pytorch是一個(gè)非常優(yōu)秀的深度學(xué)習(xí)的框架,具有速度快,代碼簡(jiǎn)潔,可讀性強(qiáng)的優(yōu)點(diǎn),下面這篇文章主要給大家介紹了關(guān)于PyTorch使用GPU訓(xùn)練的兩種方法,需要的朋友可以參考下
    2022-05-05
  • python如何將aac轉(zhuǎn)為mp3,保持原有目錄結(jié)構(gòu)

    python如何將aac轉(zhuǎn)為mp3,保持原有目錄結(jié)構(gòu)

    使用Python腳本實(shí)現(xiàn)AAC格式轉(zhuǎn)MP3格式的方法介紹,需要用戶輸入AAC文件所在目錄路徑和MP3輸出目錄路徑,通過調(diào)用FFmpeg工具實(shí)現(xiàn)格式轉(zhuǎn)換,該腳本簡(jiǎn)單易懂,適合需要批量處理音頻文件的用戶,使用前需確保已安裝FFmpeg環(huán)境
    2024-11-11
  • Python基于YOLOv8和OpenCV實(shí)現(xiàn)車道線和車輛檢測(cè)功能

    Python基于YOLOv8和OpenCV實(shí)現(xiàn)車道線和車輛檢測(cè)功能

    使用YOLOv8(You Only Look Once)和OpenCV實(shí)現(xiàn)車道線和車輛檢測(cè),目標(biāo)是創(chuàng)建一個(gè)可以檢測(cè)道路上的車道并識(shí)別車輛的系統(tǒng),并估計(jì)它們與攝像頭的距離,這篇文章主要介紹了Python基于YOLOv8和OpenCV實(shí)現(xiàn)車道線和車輛檢測(cè),需要的朋友可以參考下
    2025-01-01
  • Python logging模塊handlers用法詳解

    Python logging模塊handlers用法詳解

    這篇文章主要介紹了Python logging模塊handlers用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python學(xué)習(xí)實(shí)操案例(三)

    python學(xué)習(xí)實(shí)操案例(三)

    這篇文章主要介紹了python學(xué)習(xí)實(shí)操案例,循環(huán)輸出26個(gè)字母對(duì)應(yīng)的ASCII碼值、模擬用戶登錄、猜數(shù)游戲練習(xí)等案例,需要的小伙伴可以參考一下,希望對(duì)你有一定的幫助
    2022-02-02
  • Pycharm中的下載安裝、配置與測(cè)試方式

    Pycharm中的下載安裝、配置與測(cè)試方式

    這篇文章主要介紹了Pycharm中的下載安裝、配置與測(cè)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python進(jìn)程間數(shù)據(jù)交互的幾種實(shí)現(xiàn)方式

    python進(jìn)程間數(shù)據(jù)交互的幾種實(shí)現(xiàn)方式

    本文主要介紹了python進(jìn)程數(shù)據(jù)交互的幾種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解

    深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解

    這篇文章主要介紹了練習(xí)深度學(xué)習(xí)的一個(gè)小工程,代碼簡(jiǎn)單明確,用來作為學(xué)習(xí)深度學(xué)習(xí)的練習(xí)很適合,對(duì)于有需要的朋友可以參考下,希望大家可以體驗(yàn)到深度學(xué)習(xí)帶來的收獲
    2021-04-04

最新評(píng)論

时尚| 白水县| 碌曲县| 中宁县| 施秉县| 遂平县| 邯郸市| 垫江县| 库伦旗| 卢氏县| 昌都县| 石泉县| 康平县| 广丰县| 长寿区| 蓬溪县| 开远市| 潼南县| 唐河县| 哈尔滨市| 泽州县| 石台县| 舒城县| 南丹县| 田东县| 边坝县| 洪泽县| 海兴县| 天柱县| 康平县| 黄陵县| 赤城县| 承德县| 泰和县| 塔河县| 从江县| 肃宁县| 九江市| 民勤县| 黄浦区| 霍邱县|