前言
libSVM是臺灣林智仁(Chih-Jen Lin) 教授2001年開發的一套支持向量機庫,這套庫運算速度挺快,能夠很方便的對數據作分類或迴歸。因爲libSVM程序小,運用靈活,輸入參數少,而且是開源的,易於擴展,所以成爲目前國內應用最多的SVM的庫。
實驗報告基於第一次使用libSVM後的體驗撰寫而成。
python
實驗環境介紹
- libSVM版本
libsvm-3.24 - python版本
python-3.7.8 - 數據集
採用UCI上的iris數據集
實驗準備
- 下載libsvm-3.24.zip解壓至
D:\Program Files\libsvm
內容以下:
- 下載gnuplot至
D:\Program Files\gnuplot
內容以下:
- 對iris數據集進行處理
處理前工具
處理後學習
實驗流程
- 使用svm-scale對數據進行標準化,區間爲[-1, 1]。
處理後數據集測試
- 使用tools中的subset.py拆分訓練集和測試集(默認採用分層選擇)
- 採用svm-train.py進行訓練(線性核)
模型內容優化
- 採用svm-train.py進行訓練(高斯核)
模型內容spa
- 使用線性核模型進行預測
- 使用高斯核模型進行預測
- 使用grid.py進行參數優化
優化結果3d
- 採用理論最優參數進行訓練(默認採用高斯核)
模型內容code
- 採用理論最優模型進行預測
較本來模型有所提高blog
實驗感悟
此次實驗是我第一次使用libSVM,整體感受libSVM提供的工具十分便捷,很容易上手,而且功能十分強大。
對於本次實驗所採用的鳶尾花數據集,採用高斯核訓練的模型相較於採用線性核訓練的模型會有選用更多的支持向量,但預測效果相差1%,而理論最佳模型選取了最少的支持向量,和採用線性核所訓練出來的結果一直,雖然頗有多是數據集的影響,但也在必定程度上可以說明支持向量的多少並不必定可以決定模型的好壞。
本次實驗的遺憾在於對於鳶尾花數據集並無一個明顯地優化效果,但在以後的學習中,我還會繼續實驗,深刻感覺SVM的魅力。
圖片