hans

hans

【Machine Learning】【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 的范围。这样初始化就会在一个很高的水平上进行,最后的效果也会好很多。心急的朋友不用等迭代完就可以找一组参数进行后面的步骤。
**

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。