liblinear参数及使用方法(原创)

开发语言:JAVA

开发工具:eclipse (下载地址 http://www.eclipse.org/downloads/)

liblinear版本:liblinear-1.94.jar (下载地址:http://liblinear.bwaldvogel.de/

更多信息请参考:http://www.csie.ntu.edu.tw/~cjlin/liblinear/

1.下载 liblinear-1.94.jar,导入工程

在工程上右键---->Properties----->选中Java Build Path----->选中Libraries标签----->点击Add External JARs。

找到需要添加的jar包,确定即可。

2.创建LibLinear类 (类名自选)

代码如下:

 1 package liblinear;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.util.ArrayList;
 6 import java.util.List;
 7
 8 import de.bwaldvogel.liblinear.Feature;
 9 import de.bwaldvogel.liblinear.FeatureNode;
10 import de.bwaldvogel.liblinear.Linear;
11 import de.bwaldvogel.liblinear.Model;
12 import de.bwaldvogel.liblinear.Parameter;
13 import de.bwaldvogel.liblinear.Problem;
14 import de.bwaldvogel.liblinear.SolverType;
15
16 public class LibLinear{
17     public static void main(String[] args) throws Exception {
18         //loading train data
19         Feature[][] featureMatrix = new Feature[5][];
20         Feature[] featureMatrix1 = { new FeatureNode(2, 0.1), new FeatureNode(3, 0.2) };
21         Feature[] featureMatrix2 = { new FeatureNode(2, 0.1), new FeatureNode(3, 0.3), new FeatureNode(4, -1.2)};
22         Feature[] featureMatrix3 = { new FeatureNode(1, 0.4) };
23         Feature[] featureMatrix4 = { new FeatureNode(2, 0.1), new FeatureNode(4, 1.4), new FeatureNode(5, 0.5) };
24         Feature[] featureMatrix5 = { new FeatureNode(1, -0.1), new FeatureNode(2, -0.2), new FeatureNode(3, 0.1), new FeatureNode(4, -1.1), new FeatureNode(5, 0.1) };
25         featureMatrix[0] = featureMatrix1;
26         featureMatrix[1] = featureMatrix2;
27         featureMatrix[2] = featureMatrix3;
28         featureMatrix[3] = featureMatrix4;
29         featureMatrix[4] = featureMatrix5;
30         //loading target value
31         double[] targetValue = {1,-1,1,-1,0};
32
33         Problem problem = new Problem();
34         problem.l = 5; // number of training examples:训练样本数
35         problem.n = 5; // number of features:特征维数
36         problem.x = featureMatrix; // feature nodes:特征数据
37         problem.y = targetValue; // target values:类别
38
39         SolverType solver = SolverType.L2R_LR; // -s 0
40         double C = 1.0;    // cost of constraints violation
41         double eps = 0.01; // stopping criteria
42
43         Parameter parameter = new Parameter(solver, C, eps);
44         Model model = Linear.train(problem, parameter);
45         File modelFile = new File("model");
46         model.save(modelFile);
47         // load model or use it directly
48         model = Model.load(modelFile);
49
50         Feature[] testNode = { new FeatureNode(1, 0.4), new FeatureNode(3, 0.3) };//test node
51         double prediction = Linear.predict(model, testNode);
52         System.out.print("classification result: "+prediction);
53     }
54 }

运行后得到testNode的分类结果:

3.参数说明

本程序采用的训练样本如下(5个训练样本,5维特征):

label feature1 feature2 feature3 feature4 feature5
1 0 0.1 0.2 0 0
-1 0 0.1 0.3 -1.2 0
1 0.4 0 0 0 0
-1 0 0.1 0 1.4 0.5
0 -0.1 -0.2 0.1 1.1 0.1

测试样本为testNode变量:(0.4,0,0.3,0,0)



本文为原创博客,若转载请注明出处。

时间: 2024-10-29 10:45:42

liblinear参数及使用方法(原创)的相关文章

web页面中参数的传递方法

在web页面中参数的传递方法多样,主要有以下几种: Viewstate,Querystring,Session, Application,Cookie,Cache. Viewstate: 特点:服务启启动的各种控件的视图状态:包括控件的所有属性值:Enableviewstate可以启用和禁用视图状态:        优点:防止新产生一个页面实例后,丢失前一个页面的状态信息: 例如:在用户登录注册验证过程中,无须使用导致服务器往返行程的代码,我们只需要在客户端进行验证就可以了.另外有些控件的初始化

NHibernate各种数据库连接参数文件配置方法说明

//NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示:<?xml version="1.0" encoding="utf-8" ?><hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >  <session-factory name="CwfSer

PHP截取中文字符串不出现?号的解决方法[原创]

PHP截取中文字符串不出现?号的解决方法[原创] 大 | 中 | 小 [不指定 2007-8-15 18:51 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.15 转载请注明出处:http://blog.zyan.cc] 当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字 view plainprint? <?php $text = "1欢迎访问sina新浪播客"; $value = substr($tex

Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下 $#代表了命令行的参数数量,可以看以下实例: 复制代码 代码如下: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_20040701" exit 1; f

Java基础---Java中带参数返回值方法的使用(四十)

Java 中带参带返回值方法的使用 如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法. 例如:下面的代码,定义了一个 show 方法,带有一个参数 name ,方法执行后返回一个 String 类型的结果 调用带参带返回值的方法: 运行结果: 代码: import java.util.Arrays; public class HelloWorld {    public static void main(String[] args) {  HelloWorld hello = new

C# 使用多线程如何传递两个以上参数的实现方法(附示例)

某些情况下当我们启动一个线程的时候会向该线程传递参数,有时除了功能上需要之外,我觉得还有就是为了我们能管理好启动的线程组(当然,只开一两个线程什么的也谈不上不好管理了,我说的线程组是指10+的线程,我们很难去主动控制的). 因为刚接触C#,所以还没有在C#下用过多线程去实现某些功能.通过学习我发现单纯的去启动线程很容易,反而是想要往线程中传一些参数变得有点说道了,这里我想说传入参数的数量为>=2.不过我们还是一步一步的来,带大家过一遍C#下的多线程怎么搞. 以上一篇讲的网络通信的例子,把整个过程

mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

这篇文章主要介绍了mysql中max_allowed_packet参数的配置方法,以及查看max_allowed_packet参数当前值的方法,需要的朋友可以参考下 MySQL根据配置文件会限制Server接受的数据包大小.有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置: 复制代码 代码如下: show VARIABLES like '%max_allowed_packet%'; 显示的结果为: 复制代码 代码如下: +------

低功耗蓝牙BLE之连接事件、连接参数和更新方法

转自:http://blog.csdn.net/zzfenglin/article/details/51304084 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包.一个连接事件是指主设备和从设备之间相互发送数据包的过程.连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待 150μs 再发送. 连接间隔决定了主设备与从设备的交互间隔:它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为 1.25ms 的整数倍.要确定从设

PID控制最通俗的解释与PID参数的整定方法

转自->这里 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解.阅读本文不需要高深的数学知识. 1.比例控制 有经验的操作人员手动控制电加热炉的炉温,可以获得非常好的控制品质,PID控制与人工控制的控制策略有很多相似的地方. 下面介绍操作人员怎样用比例控制的思想来手动控制电加热炉的炉温.假设用热电偶检测炉温,用数字仪表显示温度值.在控制过程中,操作人员用眼睛读取炉温,并与炉温