libSVM使用實驗報告

回鍋肉炒肉發表於2020-11-17

前言

  libSVM是臺灣林智仁(Chih-Jen Lin) 教授2001年開發的一套支援向量機庫,這套庫運算速度挺快,可以很方便的對資料做分類或迴歸。由於libSVM程式小,運用靈活,輸入引數少,並且是開源的,易於擴充套件,因此成為目前國內應用最多的SVM的庫。
  實驗報告基於第一次使用libSVM後的體驗撰寫而成。

實驗環境介紹

  • libSVM版本
    libsvm-3.24
  • python版本
    python-3.7.8
  • 資料集
    採用UCI上的iris資料集

實驗準備

  1. 下載libsvm-3.24.zip解壓至D:\Program Files\libsvm內容如下:
    在這裡插入圖片描述
  2. 下載gnuplot至D:\Program Files\gnuplot內容如下:
    在這裡插入圖片描述
  3. 對iris資料集進行處理

處理前

在這裡插入圖片描述

處理後

在這裡插入圖片描述

實驗流程

  • 使用svm-scale對資料進行標準化,區間為[-1, 1]。
    在這裡插入圖片描述

處理後資料集

在這裡插入圖片描述

  • 使用tools中的subset.py拆分訓練集和測試集(預設採用分層選擇)
    在這裡插入圖片描述
  • 採用svm-train.py進行訓練(線性核)
    在這裡插入圖片描述

模型內容

在這裡插入圖片描述

  • 採用svm-train.py進行訓練(高斯核)
    在這裡插入圖片描述

模型內容

在這裡插入圖片描述

  • 使用線性核模型進行預測
    在這裡插入圖片描述
  • 使用高斯核模型進行預測
    在這裡插入圖片描述
  • 使用grid.py進行引數優化
    在這裡插入圖片描述

優化結果

在這裡插入圖片描述

  • 採用理論最優引數進行訓練(預設採用高斯核)
    在這裡插入圖片描述

模型內容

在這裡插入圖片描述

  • 採用理論最優模型進行預測

較原本模型有所提升

在這裡插入圖片描述

實驗感悟

  這次實驗是我第一次使用libSVM,總體感覺libSVM提供的工具十分便捷,很容易上手,並且功能十分強大。
  對於本次實驗所採用的鳶尾花資料集,採用高斯核訓練的模型相較於採用線性核訓練的模型會有選用更多的支援向量,但預測效果相差1%,而理論最佳模型選取了最少的支援向量,和採用線性核所訓練出來的結果一直,雖然很有可能是資料集的影響,但也在一定程度上能夠說明支援向量的多少並不一定能夠決定模型的好壞。
  本次實驗的遺憾在於對於鳶尾花資料集並沒有一個明顯地優化效果,但在之後的學習中,我還會繼續實驗,深入感受SVM的魅力。

相關文章