• 大小: 12.82MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-29
  • 语言: 其他
  • 标签: SVM  

资源简介

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\link.command.1.tlog

     文件       2616  2019-07-08 10:45  SVM\SVM分类算法\SVM分类算法\SVM实验报告\Debug\wenben.tlog\link.read.1.tlog

     文件        662  2019-07-08 10:45  SVM\SVM分类算法\SVM分类算法\SVM实验报告\Debug\wenben.tlog\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论