其實使用libsvm進行分類很簡單,只需要有屬性矩陣和標籤,然後就可以建立分類模型(model),然後利用得到的這個model進行分類預測了。
那神馬是屬性矩陣?神馬又是標籤呢?我舉一個直白的不能在直白的例子:
說一個班級裏面有兩個男生(男生1、男生2),兩個女生(女生1、女生2),其中
如果我們將男生定義爲1,女生定義爲-1,並將上面的數據放入矩陣data中,即 在label中存入男女生類別標籤(1、-1),即 這樣上面的data矩陣就是一個屬性矩陣,行數4代表有4個樣本,列數2表示屬性有兩個,label就是標籤(1、-1表示有兩個類別:男生、女生)。
現在迴歸正題,有了上面的屬性矩陣data,和標籤label就可以利用libsvm建立分類模型了,簡要代碼如下: 有了model我們就可以做分類預測,比如此時該班級又轉來一個新學生,其
身高190cm,體重85kg
我們想通過上面這些信息就給出其標籤(想知道其是男【1】還是女【-1】)
比如 令 testdata = [190 85]; 由於其標籤我們不知道,我們假設其標籤爲-1(也可以假設爲1)
話歸正傳,即
testdatalabel = -1;
然後利用libsvm來預測這個新來的學生是男生還是女生,代碼如下: 下面我們整體運行一下上面這段惡 搞[e gao]的背景數據和代碼(你別笑,這個是真能運行的,也有結果的): 運行結果如下: 哎,我們看到,通過預測我們得知這個新來的學生的標籤是1(男生),由於原本我們假設其標籤爲-1,假設錯誤,所以分類準確率爲0%。
好,通過上面的講解,不知道諸位看官對於利用libsvm進行分類是否有了一定了解【誰要是這麼通俗的例子還搞不清楚怎麼使用libsvm進行分類,那我真無語啦】,下面使用libsvm工具箱本身帶的測試數據heart_scale來實際進行一下測試: 運行結果: 上面的代碼基本我不想多說什麼。
只是說一下參數輸入的意義:
更多關於libsvm 參數的說明請看
libsvm 參數說明【中英文雙語版本】
http://www.matlabsky.com/thread-12380-1-1.html
還有關於建立的分類模型model 因爲好多朋友反映說,比如想得到支持向量,還有model中的一些參看看不懂等等等等一些列問題,會在後面的
分類模型model解密詳解中說明
利用libsvm-mat建立分類模型model參數解密【by faruto】
http://www.matlabsky.com/thread-12649-1-1.html
所以也希望諸位看官尤其是對svm感興趣的朋友多多關注我。O(∩_∩)O~
如果對於標籤設置問題您還沒有搞懂可以再看看這個:
【轉】Matlab中使用libsvm進行分類預測時的標籤問題再次說明
http://www.matlabsky.com/thread-12396-1-1.html
更多關於SVM的東西請看:
關於SVM的那點破事[長期更新整理 by faruto]
http://www.matlabsky.com/thread-10966-1-1.html