国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

libsvm + VS2010 + C++大部分轉(zhuǎn)載,部分原創(chuàng)

2019-11-11 02:55:31
字體:
供稿:網(wǎng)友

這篇博客使用了libsvm中提供的 svm.h svm.c,然后自己編寫了一個SVMclassification類,里面有數(shù)據(jù)讀取,訓(xùn)練,預(yù)測三個主要的函數(shù),實現(xiàn)了libsvm函數(shù)庫的函數(shù)接口調(diào)用。而不是僅僅使用libsvm包中的提供的svm-train.exe文件,svm-train.exe文件也是編寫svm-train.cpp經(jīng)過編譯生成的。

libsvm中提供的3個主要的函數(shù)接口:

struct svm_model *svm_train(const struct svm_PRoblem *prob, const struct svm_parameter *param); 訓(xùn)練函數(shù)

double svm_predict(const struct svm_model *model, const struct svm_node *x);  預(yù)測函數(shù)

int svm_save_model(const char *model_file_name, const struct svm_model *model);  模型的保存和載入struct svm_model *svm_load_model(const char *model_file_name);

只要輸入數(shù)據(jù)符合svm.cpp中的格式要求即可。

當(dāng)然還要選擇合適的核函數(shù)和參數(shù).

We propose that beginners try the following procedure : 1、Transform data to the format of an SVM package(讀入訓(xùn)練數(shù)據(jù)并保存為合適的格式) 2、Conduct simple scaling on the data(歸一化) 3、Consider the RBF kernel (徑向基函數(shù)) 4、Use cross-validation to nd the best parameter C and gama(交叉驗證選取最佳參數(shù))5、 Use the best parameter C and to train the whole training set。 Test(使用最佳參數(shù)訓(xùn)練整個數(shù)據(jù)集)

libSVM是一個非常有名的SVM開源庫,最近我在做分類任務(wù),最后需要用到SVM進(jìn)行分類,可是網(wǎng)上對于libSVM的介紹大多是matlab的,還有就是使用DOS命令調(diào)用的,直接使用libSVM的函數(shù)進(jìn)行編程的介紹非常少,我來大體介紹一下我使用的情況吧。

我對于libSVM的了解也不是很清楚,只是單純的利用他做訓(xùn)練和識別而已。

一、環(huán)境搭建

我使用的VS2013 + C++作為開發(fā)的,首先下載libSVM最新的版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/,解壓后如下圖所示:使用VS2013創(chuàng)建一個新的空工程,把上圖目錄中的svm.cpp和svm.h復(fù)制到工程目錄下,并通過在工程中右鍵——Add——Exsiting Item把這兩個文件添加到工程中去,如下圖所示。好了,到目前為止環(huán)境就搭建好了,簡單明了~注意:VS2013中使用fopen會出現(xiàn)一個錯誤,原因是VS2013自身兼容性不好,認(rèn)為fopen不安全,可以通過 工程右鍵——Properties——C++——Preprocesser——Preprocesser Definitions中添加_CRT_SECURE_NO_WARNINGS解決該問題。同時VS2013中編譯會出現(xiàn)strdup函數(shù)編譯不過去,同樣根據(jù)提示,把該函數(shù)改為_strdup即可。

二、特征文件讀取

我感覺網(wǎng)上對于libsvm有一種誤導(dǎo),就是你的特征文件必須要按照一定的格式來,才能夠被讀取訓(xùn)練,其實這只是對于使用dos命令行調(diào)用libsvm時的規(guī)定,因為libsvm自定義的特征文件格式是與其讀取相匹配的。如果我們使用自己的讀取文件函數(shù),則完全不用拘束于這種格式,只要我們在讀取函數(shù)之中與我們自己的特征文件格式相匹配即可。在libsvm中,與讀取特征文件相關(guān)的類型為svm_problem。這個類中有三個元素,如下所示:[cpp] view plain copyprint?在CODE上查看代碼片struct svm_problem   {      int n; //記錄樣本總數(shù)      double *y; //記錄樣本所屬類別      struct svm_node **x; //存儲所有樣本的特征,二維數(shù)組,一行存一個樣本的所有特征  };  
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 綦江县| 理塘县| 宁武县| 涿州市| 大安市| 安乡县| 德令哈市| 诸暨市| 金阳县| 曲麻莱县| 晋中市| 成安县| 潼关县| 喀喇| 关岭| 封开县| 辽宁省| 浠水县| 盘锦市| 平度市| 乌鲁木齐市| 盘山县| 松溪县| 老河口市| 萍乡市| 铅山县| 吴川市| 禄丰县| 大埔区| 天镇县| 宁安市| 吕梁市| 禄劝| 洪湖市| 章丘市| 达孜县| 潞城市| 海安县| 百色市| 岫岩| 丰宁|