1. 程式人生 > >【Machine Learning】【Python】三、PSO + PCA優化SVM引數C和gamma ---- 《SVM物體分類和定位檢測》

【Machine Learning】【Python】三、PSO + PCA優化SVM引數C和gamma ---- 《SVM物體分類和定位檢測》

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

在程式碼中這樣載入:

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

--------------------------------------------------------------------------------------------------------------------------------

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

前言

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

後記

大概算了一下,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的範圍。這樣初始化就會在一個很高的水平上進行,最後的效果也會好很多。心急的朋友不用等迭代完就可以找一組引數進行後面的步驟。