Python實(shí)現(xiàn)多項(xiàng)式擬合正弦函數(shù)詳情
1. 實(shí)驗(yàn)?zāi)康?/h2>
掌握最小二乘法求解(無(wú)懲罰項(xiàng)的損失函數(shù))、掌握加懲罰項(xiàng)(2 范數(shù))的損失函數(shù)優(yōu)化、梯度下降法、共軛梯度法、理解過(guò)擬合、克服過(guò)擬合的方法(如加懲罰項(xiàng)、增加樣本)
2. 實(shí)驗(yàn)要求
生成數(shù)據(jù),加入噪聲;
用高階多項(xiàng)式函數(shù)擬合曲線;
用解析解求解兩種 loss 的最優(yōu)解(無(wú)正則項(xiàng)和有正則項(xiàng))
優(yōu)化方法求解最優(yōu)解(梯度下降,共軛梯度);
用你得到的實(shí)驗(yàn)數(shù)據(jù),解釋過(guò)擬合。
用不同數(shù)據(jù)量,不同超參數(shù),不同的多項(xiàng)式階數(shù),比較實(shí)驗(yàn)效果。
語(yǔ)言不限,可以用 matlab,python。求解解析解時(shí)可以利用現(xiàn)成的矩陣求逆。梯度下降,共軛梯度要求自己求梯度,迭代優(yōu)化自己寫(xiě)。不許用現(xiàn)成的平臺(tái),例如 pytorch,tensorflow 的自動(dòng)微分工具。
3. 實(shí)驗(yàn)內(nèi)容
3.1 算法原理
本實(shí)驗(yàn)需要用多項(xiàng)式來(lái)擬合正弦函數(shù)。在 m 階多項(xiàng)式中,有 m+1 個(gè)待定系數(shù),m+1 個(gè)系數(shù)(由低到高)組成的(列)向量記作 w。要確定 w,用最小二乘法。
設(shè) E(w) = 1/2 * (Xw – Y)^T(Xw – Y),其中,X 為多項(xiàng)式中各個(gè)未知項(xiàng)代入觀測(cè)數(shù)據(jù)求得的矩陣,若記 Xi 為 X 的第 i 行的向量,則 Xi[j]為第 i 個(gè)觀測(cè)數(shù)據(jù) xi 的 j 次方,記有 n 組觀測(cè)數(shù)據(jù),多項(xiàng)式最高次為 m,易知 X 的維度為 n * (m+1)。Y 為觀測(cè)標(biāo)簽向量。即 Y[j]為第 j 組觀測(cè)數(shù)據(jù)的標(biāo)簽值(即 y 值)。從而問(wèn)題轉(zhuǎn)化為:求向量 w,使得 E(w)最小。
- 若不加入正則項(xiàng),令損失函數(shù)導(dǎo)數(shù)為零,求 w
- 若加入正則項(xiàng),令損失函數(shù)導(dǎo)數(shù)為零,求 w
- 加入正則項(xiàng),對(duì)損失函數(shù)用梯度下降,當(dāng)損失函數(shù)收斂時(shí),求 w
- 加入正則項(xiàng),對(duì)損失函數(shù)用共軛梯度法,循環(huán)迭代 m+1 次,求 w 3.2 算法實(shí)現(xiàn) 生成數(shù)據(jù),加入噪聲
用高階多項(xiàng)式函數(shù)擬合曲線;
用解析解求解兩種 loss 的最優(yōu)解(無(wú)正則項(xiàng)和有正則項(xiàng))
無(wú)正則項(xiàng):
有正則項(xiàng):
優(yōu)化方法求解最優(yōu)解(梯度下降,共軛梯度)
梯度下降法:
共軛梯度法:
用你得到的實(shí)驗(yàn)數(shù)據(jù),解釋過(guò)擬合。
多項(xiàng)式次數(shù)為 1 時(shí):
多項(xiàng)式次數(shù)為 3 時(shí):
當(dāng)多項(xiàng)式次數(shù)為 5 時(shí):
當(dāng)多項(xiàng)式次數(shù)為 7 時(shí):
當(dāng)多項(xiàng)式次數(shù)為 9 時(shí):
到此這篇關(guān)于Python實(shí)現(xiàn)多項(xiàng)式擬合正弦函數(shù)詳情的文章就介紹到這了,更多相關(guān)Python擬合正弦函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)的飛速中文網(wǎng)小說(shuō)下載腳本
這篇文章主要介紹了Python實(shí)現(xiàn)的飛速中文網(wǎng)小說(shuō)下載腳本,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04使用IPython下的Net-SNMP來(lái)管理類(lèi)UNIX系統(tǒng)的教程
這篇文章主要介紹了使用IPython下的Net-SNMP來(lái)管理類(lèi)UNIX系統(tǒng)的教程,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間數(shù)據(jù)同步功能
這篇文章主要介紹了python實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間數(shù)據(jù)同步功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Python高級(jí)過(guò)濾器之filter函數(shù)詳解
在Python中,filter()是一個(gè)非常有用的內(nèi)置函數(shù),它能夠根據(jù)指定的函數(shù)來(lái)篩選出可迭代對(duì)象中滿(mǎn)足條件的元素,本文將從入門(mén)到精通,全面介紹filter()函數(shù)的用法和相關(guān)知識(shí)點(diǎn)2023-08-08python之pyinstaller組件打包命令和異常解析實(shí)戰(zhàn)
前段時(shí)間在制作小工具的時(shí)候,直接在命令行用pyinstaller工具打包成功后,啟動(dòng)exe可執(zhí)行文件的時(shí)候各種報(bào)錯(cuò), 今天,我們就分享一下踩坑經(jīng)過(guò),需要的朋友可以參考下2021-09-09python保留小數(shù)位的三種實(shí)現(xiàn)方法
本文給大家分享python保留小數(shù)位的三種方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01python json 遞歸打印所有json子節(jié)點(diǎn)信息的例子
今天小編就為大家分享一篇python json 遞歸打印所有json子節(jié)點(diǎn)信息的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python淘寶或京東等秒殺搶購(gòu)腳本實(shí)現(xiàn)(秒殺腳本)
本篇文章主要介紹了Python 通過(guò)selenium實(shí)現(xiàn)毫秒級(jí)自動(dòng)搶購(gòu)的示例代碼,通過(guò)掃碼登錄即可自動(dòng)完成一系列操作,搶購(gòu)時(shí)間精確至毫秒,可搶加購(gòu)物車(chē)等待時(shí)間結(jié)算的,也可以搶聚劃算、火車(chē)票等的商品,感興趣的朋友跟隨小編一起看看吧2022-10-10