libsvm 使用的一个很小的例子

这是自己的一段代码,根据网上改的。

 

package com.svm;

import java.io.IOException;

import libsvm.svm;
import libsvm.svm_model;
import libsvm.svm_node;
import libsvm.svm_parameter;
import libsvm.svm_problem;


public class jmain {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //定义训练集点a{10.0, 10.0} 和 点b{-10.0, -10.0},对应lable为{1.0, -1.0}
        svm_node pa0 = new svm_node();
        pa0.index = 0;
        pa0.value = 10.0;
        svm_node pa1 = new svm_node();
        pa1.index = -1;
        pa1.value = 10.0;
        svm_node pb0 = new svm_node();
        pb0.index = 0;
        pb0.value = -10.0;
        svm_node pb1 = new svm_node();
        pb1.index = -1;
        pb1.value = -10.0;
       
       
        svm_node px0 = new svm_node();
        px0.index = 0;
        px0.value = -1.0;
        svm_node px1 = new svm_node();
        px1.index = -1;
        px1.value = -5.0;
       
        svm_node py0 = new svm_node();
        py0.index = 0;
        py0.value = 5.0;
        svm_node py1 = new svm_node();
        py1.index = -1;
        py1.value = 20.0;
       
        svm_node[] pa = {pa0, pa1}; //点a
        svm_node[] pb = {pb0, pb1}; //点b
        svm_node[] px = {px0, px1}; //点x
        svm_node[] py = {py0, py1}; //点x
        svm_node[][] datas = {pa, pb,px,py}; //训练集的向量表
        double[] lables = {1.0, -1.0,-1.0 , 1.0}; //a,b 对应的lable
       
        //定义svm_problem对象
        svm_problem problem = new svm_problem();
        problem.l = 4; //向量个数
        problem.x = datas; //训练集向量表
        problem.y = lables; //对应的lable数组
        //定义svm_parameter对象
        svm_parameter param = new svm_parameter();
        param.svm_type = svm_parameter.C_SVC;
        param.kernel_type = svm_parameter.LINEAR;
        param.cache_size = 100;
        param.eps = 0.00001;
        param.C = 1;
       
        //训练SVM分类模型
        System.out.println(svm.svm_check_parameter(problem, param)); //如果参数没有问题,则svm.svm_check_parameter()函数返回null,否则返回error描述。
        svm_model model = svm.svm_train(problem, param); //svm.svm_train()训练出SVM分类模型
        System.out.println("OK");
        System.out.println(model);
        String file="model/model.txt";
        svm.svm_save_model(file, model);
        //定义测试数据点c
        svm_node pc0 = new svm_node();
        pc0.index = 0;
        pc0.value = -0.1;
        svm_node pc1 = new svm_node();
        pc1.index = -1;
        pc1.value = 0.0;
        svm_node[] pc = {pc0, pc1};
       
        //预测测试数据的lable
        System.out.println(svm.svm_predict(model, pc));
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值