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