資源簡介
SVM的兩個例子(詳細,有實驗報告),這是之前找資料的時候花了很多積分下載的,我覺得還是蠻有用的,至少比網上很多人的沒有用的錯的代碼強的多,這是SVM的分類,有對文本的分類,還有SVM最基礎的例子。
代碼片段和文件信息
#include?“svm.h“
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
svm_parameter?param;
svm_problem?prob;
svm_model?*svmModel;
list?xList;
list??yList?;
const?int?MAX=10;
const?int?nTstTimes=10;
vector?predictvalue;
vector?realvalue;
int?trainNum=0;
//設置參數
void?setParam() //?
{
????param.svm_type?=?C_SVC;??//SVM類型
param.kernel_type?=?RBF;?//核函數類型
param.degree?=?3;???//迭代參數
param.gamma?=?0.5;??/*?for?poly/rbf/sigmoid?*/
param.coef0?=?0;???/*?for?poly/sigmoid?*/
param.nu?=?0.5;????/*?for?NU_SVC?ONE_CLASS?and?NU_SVR?*/
param.cache_size?=?40;???//MB制定訓練所需要的內存
param.C?=?500;?????/*?for?C_SVC?EPSILON_SVR?and?NU_SVR?,懲罰因子*/
param.eps?=?1e-3;???????/*?stopping?criteria?*/
param.p?=?0.1;?????????/*?for?EPSILON_SVR?*/
param.shrinking?=?1;???//指明訓練過程是否使用啟發
//?param.probability?=?0;???//指明是否要做概率估計
param.nr_weight?=?0;????/*?for?C_SVC?權重的數目*/
param.weight?=?NULL;????/*?for?C_SVC?*/
????param.weight_label?=NULL;?/*?for?C_SVC?權重,元素個數由nr_weight?決定*/
}
//SVM訓練
void?train(char?*filePath)
{
FILE?*fp;
int?k;
int?line=0;
int?temp;
?
if((fp=fopen(filePath“rt“))==NULL)
return?;
while(1)
{
?svm_node*?features?=?new?svm_node[85+1];
?//TICDATA2000.txt表中第86個屬性是我們的目標變量
?//目標是將數據源的86列分為0/1類,我們首先需要對TICDATA2000.txt進行訓練,生成model,再根據model進行預測。
?for(k=0;k<85;k++)
?{
? fscanf(fp“%d“&temp);
features[k].index?=?k?+?1;
features[k].value?=?temp/(MAX*1.0)?;
}
features[85].index?=?-1;
fscanf(fp“%d“&temp);
xList.push_back(features);???//將features放到Xlist里
yList.push_back(temp);????//將temp放到yLITS里面
????
line++;
trainNum=line;
if(feof(fp))?
break;?
}
????setParam();
/*
struct?svm_problem?//存儲本次參加運算的所有樣本(數據集),及其所屬類別。
{
int?l;?//記錄樣本總數
double?*y;?//指向樣本所屬類別的數組
};
struct?svm_node?//用來存儲輸入空間中的單個特征
{
int?index;?//輸入空間序號,假設輸入空間數為m
double?value;?//該輸入空間的值
};
?
prob.l=line;??//訓練序號
prob.x=new?svm_node?*[prob.l];??//對應的特征向量
prob.y?=?new?double[prob.l];????//放的是值
int?index=0;
while(!xList.empty())
{
prob.x[index]=xList.front();
prob.y[index]=yList.front();
xList.pop_front();
yList.pop_front();
index++;
}
//std::cout<
//*******核心函數svm_train******
svmModel?=?svm_train(&prob?¶m);
/*prop是數據的結構體(有兩層),param是參數的設置*/
/*函數的返回值是一個一個struct?svm_model?*SVM模型的指針,可以使用函數svm_save_model把這個模型保存*/
//std::cout<<“\n“<<“over\n“;
//保存model
svm_save_model(“model.txt“svmModel);
//釋放空間
delete??prob.y;
delete?[]?prob.x;
svm_free_and_destroy_model(&svmModel);
}
void?predict(char?*filePath)
{
???svm_model?*svmModel?=?svm_load_model(“model.txt“);
???//把保存的模型文件載入進來
??? FILE?*fp;
int?line=0;
int?temp;
if((fp=fopen(filePath“rt“))==NULL)
return?;
while(1)
{
?svm_node*?input?=?new?svm_node[85+1];
?for(int?k=0;k<85;k++)
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????0??2011-12-07?20:22??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\filePath
?????文件?????598995??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\main.obj
?????文件??????????0??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\main.sbr
?????文件?????184501??2019-07-08?10:43??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\svm.obj
?????文件??????????0??2019-07-08?10:43??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\svm.sbr
?????文件?????642872??2015-12-05?17:54??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\Test.obj
?????文件??????????0??2015-12-05?17:54??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\Test.sbr
?????文件?????560128??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\vc120.idb
?????文件?????454656??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\vc120.pdb
?????文件????2100224??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.bsc
?????文件???????1219??2015-12-05?17:53??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.Build.CppClean.log
?????文件????1221632??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.exe
?????文件????2885736??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.ilk
?????文件???????4745??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.log
?????文件????6328320??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.pdb
?????文件????????746??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\BscMake.command.1.tlog
?????文件????????552??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\bscmake.read.1.tlog
?????文件????????394??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\bscmake.write.1.tlog
?????文件???????3438??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\cl.command.1.tlog
?????文件???????7988??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\CL.read.1.tlog
?????文件???????1910??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\CL.write.1.tlog
?????文件???????2310??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\li
?????文件???????2616??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\li
?????文件????????662??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\li
?????文件????????206??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\Debug\wenben.tlog\wenben.lastbuildstate
?????文件???????8006??2019-07-06?10:42??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\filePath
?????文件???????5937??2019-07-08?10:45??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\main.cpp
?????文件??????????0??2019-07-22?11:08??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\model.txt
?????文件???????4811??2011-12-06?19:19??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\preditdata.txt
?????文件??????12009??2011-12-07?11:18??SVM\SVM分類算法\SVM分類算法\SVM實驗報告\result.txt
............此處省略92個文件信息
- 上一篇:VTK圖形圖像開發進階源碼
- 下一篇:opencv3 神經網絡字母識別源碼.zip
評論
共有 條評論