libsvm使用
SVM基礎:
http://www.chinakdd.com/article-W82k0g2822JE712.html
看了一部分,還沒看完。。
博文:
(1)http://blog.csdn.net/chl033/article/details/4645544
寫的淺顯易懂
(2)如何提升LibSVM分類效果
http://blog.csdn.net/xiahouzuoxin/article/details/9372805
1. ‘svm-scale’的使用
2. 實際使用LibSVM的步驟
3. 關于交叉驗證(CrossValidation,簡稱CV)
4. 關于GridSearch
5. 非平衡數據
6. 自定義核函數(轉自http://www.matlabsky.com/forum.php?mod=viewthread&tid=15296)
另:
一、SVM 怎樣能得到好的結果
參考:http://jacoxu.com/?p=118
svmscale是用來對原始樣本進行縮放的, 范圍可以自己定, 一般是[0,1]或[-1,1]. 縮放的目的主要是
1) 防止某個特征過大或過小, 從而在訓練中起的作用不平衡;
2) 為了計算速度. 因為在核計算中, 會用到內積運算或exp運算, 不平衡的數據可能造成計算困難.
用法: svmscale [-l lower] [-u upper]
[-y y_lower y_upper]
[-s save_filename]
[-r restore_filename] filename
其中, []中都是可選項:
-l: 設定數據下限; lower: 設定的數據下限值, 缺省為-1
-u: 設定數據上限; upper: 設定的數據上限值, 缺省為1
-y: 是否對目標值同時進行縮放; y_lower為下限值, y_upper為上限值;
-s save_filename: 表示將縮放的規則保存為文件save_filename;
-r restore_filename: 表示將按照已經存在的規則文件restore_filename進行縮放;
filename: 待縮放的數據文件, 文件格式按照libsvm格式.
默認情況下, 只需要輸入要縮放的文件名就可以了: 比如(已經存在的文件為test.txt)
svmscale test.txt
這時, test.txt中的數據已經變成[-1,1]之間的數據了. 但是, 這樣原來的數據就被覆蓋了, 為了讓規劃好的數據另存為其他的文件, 我們用一dos的重定向符>來另存為(假設為out.txt):
svmscale test.txt > out.txt
運行后, 我們就可以看到目錄下多了一個out.txt文件, 那就是規范后的數據. 假如, 我們想設定數據范圍[0,1], 并把規則保存為test.range文件:
svmscale –l 0 –u 1 –s test.range test.txt > out.txt
這時, 目錄下又多了一個test.range文件, 可以用記事本打開, 下次就可以用-r test.range來載入了.
應用 RBF kernel
用cross-validation和grid-search得到最優的c和g
用得到的最優c和g訓練訓練數據
測試
二、Windows下svm使用的文件格式形成代碼
在matlab中調用svm時沒有那么多功能(我目前理解的是這樣哦~~),如交叉驗證和數據歸一化等。為了使用這些功能,可以使用libsvm的exe文件進行交叉驗證和訓練等。這些文件能夠接收的訓練數據是下面的形式。下面程序就是把matlab中的特征向量和標簽轉換成需要的格式。
最終形成的文件格式為:
[標簽] 1:value 2:value 3:value……..
1 1:0 2:0 3:0.123379 4:0.56402 5:1.25773 6:2.27725 7:3.36294 8:2.5937
0 1:0 2:0 3:0 4:0.00410983 5:0.294078 6:1.3213 7:2.09252 8:3.55806
…
總結
- 上一篇: AMDD 一个把大问题分成小问题的优化算
- 下一篇: caffe 练习1:training L