libsvm C++ 代码参数说明汇总
幾個重要的數據結構?
2.1
2.2
struct svm_node {int index;double value; };svm_node是用來存儲單個樣本數據的,打個比方說,svm_problem是一群羊,那么svm_node就是這一群羊中的一只。需要注意的是,svm_node的存儲空間應該比特征數大一位,最后一位index值必須以-1結束。比如:
svm_node* node = new svm_node[1 + feature_size];for (int j = 0; j < feature_size; j++){node[j].index = j + 1;node[j].value = xdata[j];}node[feature_size].index = -1;return node;2.3
struct svm_parameter{int svm_type;// SVM的類型int kernel_type;// 核函數double degree;// 多項式參數double gamma;// 核函數為poly/rbf/sigmoid的參數double coef0;// 核函數為poly/sigmoid的參數//下面是訓練所需的參數double cache_size;// 訓練所需的內存MB為單位double eps;// 訓練停止的標準(誤差小于eps停止)double C;// 懲罰因子,越大訓練時間越長int nr_weight;// 權重的數目,目前只有兩個值,默認為0int *weight_label;// 權重,元素個數由nr_weight決定double* weight;// C_SVC權重double nu;double p;int shrinking;// 訓練過程是否使用壓縮int probability;// 是否做概率估計};?libsvm命名空間下主要使用類:
svm_model 為模型類,通過訓練或加載訓練好的模型文件獲得
svm_parameter 為參數類,主要為支持向量機設定參數,具體參數如下:
svm_parameter.kernel_type
核函數類型:核函數設置類型(svm_parameter.LINEAR)
svm_parameter.LINEAR – 線性:u'×v
svm_parameter.POLY– 多項式:(γ×u'×v + coef0)^degree
svm_parameter.RBF – RBF函數:exp(-γ×|u-v|^2)
svm_parameter.SIGMOID – sigmoid:tanh(γ×u'×v + 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在模型中的定位
總結
以上是生活随笔為你收集整理的libsvm C++ 代码参数说明汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux不用命令开启ssh,不用密码也
- 下一篇: ssh密码长度漏洞java_CVE-20