java libsvm回归_java学习--Libsvm java版代码注释及详解(一)

本文介绍了如何使用Libsvm Java版进行支持向量回归(SVR)算法的实践,包括下载Libsvm源代码、创建训练与预测主函数、理解训练过程涉及的参数设置和数据格式。通过示例代码展示了如何调用svm_train()和svm_predict(),并详细解释了svm_train()内部的工作流程,如参数设置、数据读取、模型训练和交叉验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于工作中要用到SVR算法,项目组的系统是用java开发的,因此,为了能与项目组同步,算法需要用java来实现,还好台湾大学的林智仁教授推出了Libsvm的源代码,包括java、c++等语言的源代码,在此表示感谢!因此,算法的主体部分不用自己开发了,在源代码的基础上做一些修改就能够应用到自己的项目中了,开源真好!受益了无数人。。。为了弘扬开源的精神,开博记录学习Libsvm java版源代码的过程。下面正式开始!先从SVR回归算法的代码开始,然后逐步扩展到分类算法。希望自己能够坚持下去。加油。

---------------------我是华丽的分割线-----------高手的小jj,我割割割--嘻嘻-------------------

一、初识Libsvm

Libsvm java版本的源代码很容易下载到,为了使算法能够运行,要先把源代码复制到myeclipse中(貌似是废话),在这里,提供一个链接,里面有很好的说明,按照文档中的说明就能够将Libsvm运行起来。

按照上述链接中的方式,自己新建一个main函数,来调用Libsvm算法的源代码,代码如下:

public static void main(String[] args) throws IOException {

String []arg ={ "trainfile\\train1.txt", //存放SVM训练模型用的数据的路径

"trainfile\\model_r.txt"};  //存放SVM通过训练数据训练出来的模型的路径

String []parg={"trainfile\\test2.txt",   //这个是存放测试数据

"trainfile\\model_r.txt",  //调用的是训练以后的模型

"trainfile\\out_r.txt"};  //生成的结果的文件的路径

System.out.println("........SVM运行开始..........");

//创建一个训练对象

svm_train t = new svm_train();

//创建一个预测或者分类的对象

svm_predict p= new svm_predict();

t.main(arg);   //调用

p.main(parg);  //调用

}

注意:

1. 该主函数是为了调用Libsvm源代码的,创建了两个字符数组:arg[]和parg[]。

其中arg[]数组存放了两个字符串,"trainfile\\train1.txt"和"trainfile\\model_r.txt",这两个字符串传入到Libsvm中的svm_train();

在trainfile\\train1.txt这个文件里面存储的是训练数据,训练数据的格式如下:

Y     index1:特征1   index2:特征2    ....

 1:特征1       2:特征2       3:特征3 ...

  1:特征1       2:特征2       3:特征3 ...

其中如果是分类问题,lable为类标签。如果是回归问题,lable为具体的实数。为了生成这种格式的数据,可以采用FormatDataLibsvm.exl这个excel文件生成,网上可以下的到。当然,也可以自己写java代码,来生成这种格式的数据。代码随后奉上。而trainfile\\model_r.txt这个文件的作用是存储利用SVM算法训练好的模型。

而parg[]这个数组存放了3个字符串:trainfile\\test2.txt---用于存储测试样本的文件,数据格式与训练样本的格式一样、trainfile\\model_r.txt---前面生成的训练好的模型,在用新样本进行预测时直接使用前文训练好的模型即可、trainfile\\model_r.txt---用于存储模型的预测值,分类问题的话存储的是预测样本每条样本所属的类别,而回归问题的话,存储的是每条样本所对应的预测值。

2. svm_train()与svm_predict()。这两个函数是Libsvm程序包中的源代码,由此即进入到了Libsvm源代码的世界了。

二、Libsvm的真面目

由于本篇是介绍支持向量回归机--SVR的,所以仅从用到SVR算法的代码入手,来分析Libsvm的源代码。分析时采用逐层进入的方式。下面直接上程序代码目录:

+++++++目录+++++

前文是首先调用svm_train

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值