首页 > 代码库 > libsvm工具箱C++下编程实践1

libsvm工具箱C++下编程实践1

转载请说明出处  http://blog.csdn.net/u013491262/article/details/37344193   点击打开链接


step1 :  理论学习,资料随便找

step2:  源码分析,资料随便找 

step3; 简单实践

   

一、生成数据

 为了将问题简化,特意生成训练集  tain_data.txt

类1 : y<=x-1 ,

类2 : y>= x+1 .

个100组数据,特征为2维。

 测试集100组数据test_data.txt

int main(){
    freopen("tain_data.txt" ,  "w" , stdout) ;

    srand( (unsigned int) time(NULL) ) ;
    int n = 0 , x , y ;

    while(n < 100){
        x = rand() % 10 + 1 ;
        y = rand() % 10 + 1 ;
        if(y <= x - 1)  printf("-1 %d %d\n" , x, y) ;
        else continue ;
        n++ ;
    }

    n = 0 ;
    while(n < 100){
        x = rand() % 10 + 1 ;
        y = rand() % 10 + 1 ;
        if(y >= x + 1)  printf("1 %d %d\n" , x, y) ;
        else continue ;
        n++ ;
    }

    freopen("test_data.txt" ,  "w" , stdout) ;
    n = 0 ;
    while(n < 100){
        x = rand() % 10 + 1 ;
        y = rand() % 10 + 1 ;
        if(y <= x - 1)       printf("-1 %d %d\n" , x, y) ;
        else if(y >= x + 1)  printf("1 %d %d\n" , x, y) ;
        else continue ;
        n++ ;
    }

    return 0;
}

二: 实验


引用《交大源码分析》


引用《交大源码分析》

代码部分: 此代码难度系数很小,没有细讲必要。

#include "svm.h"
using namespace std ;

const int feature_size = 2 ;
const int train_size = 200 ;
svm_problem prob ;

void init_svm_problem(){
     prob.l = train_size ;
     prob.y = new double[train_size] ;
     prob.x = new svm_node* [train_size] ;
     svm_node *x_space = new svm_node[train_size*(1+feature_size)] ;
     ifstream  in ;
     in.open("tain_data.txt") ;
     double value , lb ;
     for(int i = 0 ; i < train_size ; i++){
         in>>lb ;
         //prob.y[i] = lb ;
         if(i < train_size/2) prob.y[i] = 1 ;
         else       prob.y[i] = -1 ;
         for(int j = 0 ; j < feature_size ; j++){
             in>>value ;
             if(value != 0.0){
                x_space[i*(feature_size+1) + j].index = j + 1 ;
                x_space[i*(feature_size+1) + j].value = http://www.mamicode.com/value ;>




结果


效果不好,没有寻找参数。 

待续文。

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

问题解决,由于文件单词拼写错误。 



--------------------------------------测试数据-----------------------------------------------------------

tain_data.txt

-1 6 2
-1 8 1
-1 9 2
-1 2 1
-1 8 3
-1 5 2
-1 10 2
-1 8 5
-1 2 1
-1 7 6
-1 7 2
-1 8 3
-1 9 8
-1 4 2
-1 4 2
-1 9 8
-1 10 1
-1 10 7
-1 10 2
-1 8 1
-1 9 4
-1 10 1
-1 6 2
-1 8 2
-1 7 5
-1 8 1
-1 5 1
-1 5 2
-1 10 1
-1 6 3
-1 7 6
-1 10 3
-1 8 4
-1 10 5
-1 10 8
-1 7 1
-1 10 2
-1 5 3
-1 9 8
-1 10 1
-1 10 9
-1 7 5
-1 9 7
-1 6 1
-1 8 6
-1 5 1
-1 7 1
-1 9 3
-1 9 1
-1 7 5
-1 5 1
-1 10 9
-1 4 1
-1 7 5
-1 4 2
-1 9 4
-1 7 2
-1 9 5
-1 10 6
-1 10 4
-1 5 1
-1 8 2
-1 7 4
-1 5 3
-1 5 3
-1 7 2
-1 10 6
-1 10 7
-1 8 2
-1 10 3
-1 10 4
-1 10 4
-1 8 7
-1 6 1
-1 3 2
-1 9 3
-1 5 1
-1 10 9
-1 9 2
-1 5 4
-1 10 4
-1 9 7
-1 4 3
-1 4 1
-1 10 7
-1 5 1
-1 9 3
-1 6 1
-1 6 1
-1 3 1
-1 6 1
-1 8 2
-1 8 7
-1 10 6
-1 8 5
-1 7 1
-1 7 6
-1 9 2
-1 8 5
-1 9 2
1 5 10
1 5 7
1 4 10
1 4 9
1 9 10
1 2 4
1 2 8
1 3 7
1 7 8
1 9 10
1 1 5
1 5 9
1 4 5
1 4 8
1 6 7
1 2 8
1 2 10
1 4 5
1 6 8
1 1 9
1 4 6
1 4 5
1 1 9
1 2 4
1 1 9
1 5 8
1 3 7
1 6 7
1 4 10
1 3 7
1 4 6
1 4 9
1 3 6
1 1 4
1 5 9
1 1 6
1 2 5
1 4 6
1 1 9
1 4 8
1 9 10
1 7 9
1 2 3
1 4 9
1 1 4
1 3 8
1 4 9
1 4 8
1 8 10
1 9 10
1 6 8
1 1 10
1 2 3
1 1 9
1 1 8
1 8 10
1 3 7
1 2 7
1 1 10
1 5 7
1 1 10
1 4 7
1 3 5
1 6 9
1 2 7
1 2 5
1 1 5
1 1 4
1 5 6
1 1 6
1 3 7
1 5 9
1 6 10
1 1 9
1 3 10
1 6 10
1 2 7
1 4 7
1 2 7
1 6 7
1 2 8
1 7 9
1 1 7
1 4 8
1 1 5
1 4 7
1 3 6
1 2 4
1 4 9
1 5 9
1 3 10
1 7 9
1 3 7
1 1 10
1 4 10
1 6 8
1 3 4
1 6 9
1 3 7
1 3 5

test_data.txt
1 2 10
1 1 7
-1 7 3
1 1 6
-1 8 1
1 4 8
-1 9 6
1 3 10
-1 4 2
1 1 9
-1 8 5
-1 9 4
-1 9 3
-1 8 3
-1 8 6
1 1 5
1 1 3
1 1 5
-1 6 3
-1 9 5
-1 8 2
1 2 10
1 3 6
-1 9 8
1 1 4
1 5 6
-1 9 8
-1 8 2
1 3 6
1 5 6
-1 8 4
1 6 7
-1 9 3
1 9 10
1 3 5
1 1 2
-1 10 7
-1 8 6
1 4 6
-1 9 3
-1 8 2
1 2 8
-1 2 1
-1 9 7
-1 8 3
-1 9 3
1 1 2
-1 8 5
-1 7 4
1 3 10
1 3 8
-1 10 7
1 3 6
1 5 6
-1 6 2
1 1 6
1 1 7
1 5 6
-1 9 3
1 3 10
1 4 7
-1 8 2
-1 6 2
-1 7 6
-1 9 1
-1 10 5
1 3 7
-1 7 2
-1 7 2
-1 10 4
1 2 8
-1 10 2
1 3 8
-1 7 1
1 5 10
-1 5 4
-1 3 1
-1 10 1
1 6 10
1 8 10
-1 7 3
1 1 8
1 1 10
1 3 7
-1 2 1
1 2 7
-1 7 4
-1 6 5
1 4 8
1 2 7
1 5 7
1 7 10
-1 10 9
-1 5 1
-1 10 1
-1 7 4
1 3 4
-1 9 2
-1 8 7
1 2 6