libsvm 使用

 目前主要有兩種.NET版本的svm: libsvm.NET 和svm.NET還要努力啊

libsvm是著名的SVM開源組件,目前有JAVA.C/C++,.NET 等多個版本,本人使用的是2.82

libsvm命名空間下主要使用類:

svm_model 爲模型類,通過訓練或加載訓練好的模型文件獲得

svm_parameter 爲參數類,主要爲支持向量機設定參數,具體參數如下:

svm_parameter.svm_type
svm類型:SVM設置類型(默認svm_parameter.C_SVC)
svm_parameter.C_SVC -- C-SVC n(n>=2)分類器,允許用異常值懲罰因子C進行不完全分類。
svm_parameter.NU_SVC -- ν-SVC n類似然不完全分類的分類器。參數nu取代了c,其值在區間【0,1】中,nu越大,決策邊界越平滑。
svm_parameter.ONE_CLASS – 一類SVM 單分類器,所有的訓練數據提取自同一個類裏,然後SVM建立了一個分界線以分割該類在特徵空間中所佔區域和其它類在特徵空間中所佔區域。
svm_parameter.EPSILON_SVR -- ε -SVR 迴歸。 訓練集中的特徵向量和擬合出來的超平面的距離需要小於p。異常值懲罰因子C被採用。
svm_parameter.NU_SVR -- ν-SVR 迴歸;nu 代替了p

svm_parameter.kernel_type
核函數類型:核函數設置類型(svm_parameter.LINEAR)
svm_parameter.LINEAR – 線性:u'×v - 沒有任何向映射至高維空間,線性區分(或迴歸)在原始特徵空間中被完成,這是最快的選擇。 d(x,y) = x?y == (x,y)
svm_parameter.POLY– 多項式:(γ×u'×v + coef0)^degree - 多項式核: d(x,y) = (gamma*(x?y)+coef0)degree
svm_parameter.RBF – RBF函數:exp(-γ×|u-v|^2) - 徑向基,對於大多數情況都是一個較好的選擇:d(x,y) = exp(-gamma*|x-y|2)
svm_parameter.SIGMOID – sigmoid:tanh(γ×u'×v + coef0) - sigmoid函數被用作核函數: d(x,y) = tanh(gamma*(x?y)+coef0)
degree, gamma, coef0:都是核函數的參數,具體的參見上面的核函數的方程。

svm_parameter.degree
核函數中的degree設置(默認3)

svm_parameter.coef0
核函數中的coef0設置(默認0)

svm_parameter.shrinking
是否使用啓發式,0或1(默認1)

svm_parameter.nu
設置ν-SVC,一類SVM和ν- SVR的參數(默認0.5)

svm_parameter.C
設置C-SVC,ε -SVR和ν-SVR的參數(默認1)

svm_parameter.cache_size
設置cache內存大小,以MB爲單位(默認40)

svm_problem 相當於訓練集合,可講需要訓練的數據加入該類傳遞給訓練器

svm_node 內部使用的數據結構,主要用於保存待訓練數據

svm 主調用程序中我們一般使用以下幾個方法:

svm.svm_train(svm_problem,svm_parameter) 該方法返回一個訓練好的svm_model

svm.svm_load_model(文件名); 該方法返回一個訓練好的svm_model

svm.svm_save_model(文件名,svm_model); 該方法將svm_model保存到文件中

svm.svm_predict_values(svm_model,svm_node,double); 該方法返回doule類值,svm_node對svm_model測試,返回值確定了svm_node在模型中的定位

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ssrs626/archive/2008/11/24/3362833.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章