您的位置:首页 > 编程语言 > C语言/C++

libsvm c++ 简单例子 性别预测

2014-11-22 22:13 393 查看
libsvm身高预测简单例子

步骤:

1.libsvm官网下载,libsvm包,http://www.csie.ntu.edu.tw/~cjlin/libsvm/

2.新建工程,并导入头文件和源文件,svm.h svm-train.c svm.cpp

3.新建svm_example.cpp源文件,编写svm_example文件

svm_example步骤

1.参数实例化,导入或初始化train数据

2.生成model

3.初始化test数据,并预测

svm_example.cpp文件如下

#include "svm.h"
#include <string.h>
#include<iostream>
using namespace std;

svm_parameter param;

void init_param(){
param.svm_type = C_SVC;
param.kernel_type = RBF;
param.degree = 3;
param.gamma = 0.0001;
param.coef0 = 0;
param.nu = 0.5;
param.cache_size = 100;
param.C = 10;
param.eps = 1e-5;
param.shrinking = 1;
param.probability = 0;
param.nr_weight = 0;
param.weight_label = NULL;
param.weight = NULL;
}
int main(){
init_param();
svm_problem prob;
prob.l = 4; //样本数
prob.y = new double[prob.l];
double d;
int probfeature = 2; //样本特征维数

if(param.gamma == 0) param.gamma = 0.5;
svm_node *x_space = new svm_node[(probfeature+1)*prob.l];//样本特征存储空间
prob.x = new svm_node * [prob.l]; //每一个X指向一个样本
cout<<"size: "<<sizeof(x_space)<<endl;
//train data 身高190cm,体重70kg,男
x_space[0].index = 1;
x_space[0].value = 190;
x_space[1].index = 2;
x_space[1].value = 70;
x_space[2].index = -1;
prob.x[0] = &x_space[0];
prob.y[0] = 1;
x_space[3].index = 1;
x_space[3].value = 180;
x_space[4].index = 2;
x_space[4].value = 80;
x_space[5].index = -1;
prob.x[1] = &x_space[3];
prob.y[1] = 1;
x_space[6].index = 1;
x_space[6].value = 161;
x_space[7].index = 2;
x_space[7].value = 45;
x_space[8].index = -1;
prob.x[2] = &x_space[6];
prob.y[2] = -1;
x_space[9].index = 1;
x_space[9].value = 163;
x_space[10].index = 2;
x_space[10].value = 47;
x_space[11].index = -1;
prob.x[3] = &x_space[9];
prob.y[3] = -1;
svm_model *model = svm_train(&prob, ¶m);
//predict 身高180cm, 体重85kg
svm_node xnode[3];
xnode[0].index = 1;
xnode[0].value = 161;
xnode[1].index = 2;
xnode[1].value = 85;
xnode[2].index = -1;
d = svm_predict(model, xnode);
cout<<d<<" "<<endl;
//predict 身高161cm,体重50kg
xnode[0].index = 1;
xnode[0].value = 180;
xnode[1].index = 2;
xnode[1].value = 40;
xnode[2].index = -1;
d = svm_predict(model, xnode);
cout<<d<<" "<<endl;

delete[] x_space;
delete[] prob.x;
delete[] prob.y;
}

工程下载链接http://download.csdn.net/detail/zilong230905/8188157

参考:

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

2.libSVM分类小例C++

3.libsvm实例

4.SMO的C++实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svm