日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 均方误差_一个很随意的Python智能优化库,一个文件就是一个库-- PySwarm

發布時間:2025/3/19 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 均方误差_一个很随意的Python智能优化库,一个文件就是一个库-- PySwarm 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前無聊做了個簡單的Python智能算法庫的小總結:Python智能優化算法庫小匯總 。當時沒注意到有一個庫PySwarms是基于另外一個小庫 PySwarm開發的。

這個庫非常有意思,整個庫只依賴Numpy,并且最核心的文件其實只有一個:pso.py.

簡介里面寫著:pso that supports constraints. 并且還有200個stars.

這么有趣的庫我們當然要來玩一玩。于是開干:

先來個最簡單的無約束優化

目標函數就取一個最簡單的二次函數:

簡單跑一下看看效果。這個問題很顯然解析解就是所有變量為0,它的結果是10的負5次方量級,基本上算是對的。誤差我們用的是默認值,迭代次數也不多,還行。

再來試試它標榜的帶約束優化

這個問題整得稍復雜一點,它的最優值是 x1等于6,x2等于4.9999,目標函數的最小值是11。(注意,這里說的就是精確值)。

跑完之后看看效果。幾乎和解析解一樣,誤差很小。這個效果還是挺不錯的。

針對這個問題我們還要簡單解釋一下,它的約束條件的定義其實非常簡單。寫成標準函數就是 g(x)大于等于0。在咱們這個例子里由于它是一個線性函數,所以我們就直接列出它的系數矩陣。這種定義方式非常方便,因為只要是 可計算 的函數都可以寫出來。

上面這些問題都還比較簡單,但在實際問題中我們更想玩的一類問題是,帶有參數的優化問題。

比如我們先考慮一下這個非常簡單的問題。目標函數仍然是一個二次函數,但每個分量的前面都有個系數。

這個語法也很簡單,先定義一個帶有兩個參數的函數。再把參數值寫成一個dict放在外面,最后把它傳給pso函數即可。運行之后我們可以看到這個效果還是不錯的,也是在10的負5次方量級。

這種帶參數的優化算法就忍不住讓人玩一把函數擬合

咱們來考慮這個非常簡單的線性函數。目標函數設成均方誤差。那么這里 xi, yi 組成的樣本集就是我們要傳的參數。

為了方便起見我們先讓 x 在1到10取值,取100個點。為了讓難度增大一點我們在生成 y的時候加上5%的噪聲。最后把它們放到一個dict里面。

為了更方便,我們改變一下目標函數的定義,直接用**kwargs作為參數,這樣我們就可以省略掉在函數中重新對變量進行提取命名的過程。 直接調用x,y就可以了。返回值就是最小均方誤差。

尋優范圍我們設成負5到正5。一切就緒開干看結果。 注意咱們生成數據時的模型里a等于0.1,b等于2。由PSO算出的結果分別是0.1043和1.9734。由于加了5%的噪聲,出現了一點偏差,這是非常正常的。而最后的均方誤差也只有0.531。效果還是很不錯的。

為了更直觀地看到效果咱還是把對比圖畫一下。由于我們給的系數比較小,所以加了5%的噪聲過后還是能看到很明顯的波動。不過擬合出的這條直線看起來是很好地穿過了它們的中間,效果是不錯的。如果噪聲再小一點可能還會更好。

當然,這個庫似乎也并不完美

目前感覺毛病還挺多,比如不能在API關閉verbose,沒有返回迭代過程(收斂曲線的值)等等。但整個設計很完整,運行也很穩定。所以還是可以玩一玩的。

另外,目前我們仍然覺得Python的智能算法庫還不夠多,不夠豐富。希望今后能有更多更好的庫出現吧。

今天就到這里,謝謝大家!~


關注我們分享更多有趣有用的知識喲~

總結

以上是生活随笔為你收集整理的python 均方误差_一个很随意的Python智能优化库,一个文件就是一个库-- PySwarm的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。