• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C/C++
  • 标签: svm  smo  c++  

资源简介

自己写的c++程序,svm(支持向量机)smo方法,可用于多分类,可运行,附有数据。

资源截图

代码片段和文件信息


//The kernel function is RBF(Radial-Basis Function).    
   
#include “smo.h“    
 

void main()   
{ //  ofstream outClientFile(“data_b_a_result.txt“ ios::out);//如果指定的文件data_result.txt不存在,ofstream就用该文件名建立它。 
  // ofstream outClientFile2(“test_result.txt“ ios::out);
    //设置样本值矩阵    
   setX();
    //设置目标值矩阵    
   setT(); 

//有e种目标分法,end_support_i个样本,1个测试样本,分别对每一种情况进行训练。
int ij;
for(int aa=first_test_i;aa {
for(i=0;i {//i=0;
result=0;
for(j=0;j {
target[j]=target1[j][i];

}
smoExample();
for(j=0;j {
if(alph[j]>0)
result+=target[j]*alph[j]*kernel_func(jaa);
}
result=result-b;
if(result>0)
result=1;
else
result=-1;

result_final[aa-first_test_i][i]=result;

/* cout< outClientFile<  outClientFile<<“b=“<  outClientFile2< for(j=0;j {
                outClientFile<<“alph[“<            }   
        */
}
/* cout<outClientFile2< }
   /*  outClientFile2<  outClientFile<  right_rate();
   system(“pause“);
    //存放训练后的参数    
    

}   
void setX()   
{   
    //为了在需要时方便地检索要处理的数据,数据应保存在文件中。    
    ifstream inClientFile(“data_train.txt“ ios::in);//ifstream用于从指定文件输入    
    if(!inClientFile)//用!inClientFile条件判断文件是否打开成功    
    {   
        cerr<<“File could not be opened!“<        exit(1);//exit的作用为终止程序。    
    }//end if    
   
    int i=0j=0;   
    double a_data;//a_data为每次读到的数据 默认为6位有效数字。    
    while(inClientFile>>a_data)   
    {   
        dense_points[i][j]=a_data;   
        j++;   
        if(j==d)   
        {   
            j=0;   
            i++;   
        }   
    }   
    inClientFile.close();//显式关闭不再引用的文件。    
}   

//set targetT[]    
void setT()   
{   
//为了在需要时方便地检索要处理的数据,数据应保存在文件中。    
    ifstream inClientFile(“data_labels.txt“ ios::in);//ifstream用于从指定文件输入    
   
    //exit program if ifstream could not open file    
    if(!inClientFile)//用!inClientFile条件判断文件是否打开成功    
    {   
        cerr<<“File could not be opened!“<        exit(1);//exit的作用为终止程序。    
    }//end if    
    //训练样本目标值    
   int i=0j=0;   
    int a_data;//a_data为每次读到的数据 默认为6位有效数字。    
    while(inClientFile>>a_data)   
    {   
        target1[i][j]=a_data;   
        j++;   
        if(j==e)   
        {   
            j=0;   
            i++;   
        }   
    }  
inClientFile.close();//显式关闭不再引用的文件。
 }  
 void right_rate()
 {
ifstream inClientFile(“test_labels.txt“ ios::out);
  if(!inClientFile)//用!inClientFile条件判断文件是否打开成功    
    {   
        cerr<<“File could not be opened!“<        exit(1);//exit的作用为终止程序。    
    }//end if    
int i=0j=0;   
    int a_data;//a_data为每次读到的数据 默认为6位有效数字。    
    while(inClientFile>>a_data)   
    {   
        tes

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        801  2012-10-16 20:57  svm_smo\data_labels.txt

     文件      18414  2012-10-24 13:04  svm_smo\data_train.txt

     文件      14255  2012-11-15 18:13  svm_smo\smo.cpp

     文件       1591  2012-11-15 18:09  svm_smo\smo.h

     文件        801  2012-10-16 20:57  svm_smo\test_labels.txt

     目录          0  2012-11-15 18:15  svm_smo

----------- ---------  ---------- -----  ----

                35862                    6


评论

共有 条评论