hans

hans

【機器學習】【Python】三、PSO + PCA優化SVM參數C和gamma ---- 《SVM物體分類和定位檢測》


---------------------【6.27 更新 libsvm 使用方法】-------------------------------------------------------------------

先去 github 下載解壓到隨便哪個目錄中: https://github.com/cjlin1/libsvm

在程式碼中這樣載入:

import sys
sys.path.append('path/to/libsvm/')
from svmutil import *

完工~~~


** 代碼看 github,新的代碼每運算一次迭代會快一點。 **

最新代碼 Github 地址: https://github.com/HansRen1024/SVM-classification-localization

前言#

跟前面兩篇文章一樣,這也是一篇代碼分享和心得體會的文章。技術問題不過多解釋。代碼有問題的話就留言問吧,代碼我動一下就亂套了,之前寫的註釋也沒保留。煩煩煩~~~做 PSO 建議大家先多嘗試幾次,盡量縮小初始參數範圍。範圍縮小到一定程度後再完整跑一次 PSO 看看。最終結果建議去 txt 文件找準確率最高的。
** 記得去 github 看最新的代碼。 **

[PSO+PCA 代碼]#

(https://github.com/HansRen1024/SVM-classification-localization)

後記#

大概算了一下,30 個 birds,50 次迭代。一共要運算 1+30+(30+30)×50+(1+30)×50 =
4581 次交叉驗證,每次交叉驗證還要運算 3 次。哪怕我降到 100 維也需要幾個小時才能跑完。而且 PSO 本身也有可能陷入局部最優。所以我同時跑了多個程式,看看結果差距如何。

** github 上最新的代碼運算次數為 1+30+30×50+(1+30)×50 = 3081 快很多哦 **

**
還有個小訣竅就是不用每次都等這個演算法迭代結束,先固定一個 C 值,然後小範圍修改 gamma 值,觀測在哪個小範圍準確率高。確定了 gamma 的小範圍,再去找 C 的範圍。這樣初始化就會在一個很高的水平上進行,最後的效果也會好很多。心急的朋友不用等迭代完就可以找一組參數進行後面的步驟。
**

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。