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类 (类名自选)
代码如下:
package liblinear; import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import de.bwaldvogel.liblinear.Feature;
import de.bwaldvogel.liblinear.FeatureNode;
import de.bwaldvogel.liblinear.Linear;
import de.bwaldvogel.liblinear.Model;
import de.bwaldvogel.liblinear.Parameter;
import de.bwaldvogel.liblinear.Problem;
import de.bwaldvogel.liblinear.SolverType; public class LibLinear{
public static void main(String[] args) throws Exception {
//loading train data
Feature[][] featureMatrix = new Feature[5][];
Feature[] featureMatrix1 = { new FeatureNode(2, 0.1), new FeatureNode(3, 0.2) };
Feature[] featureMatrix2 = { new FeatureNode(2, 0.1), new FeatureNode(3, 0.3), new FeatureNode(4, -1.2)};
Feature[] featureMatrix3 = { new FeatureNode(1, 0.4) };
Feature[] featureMatrix4 = { new FeatureNode(2, 0.1), new FeatureNode(4, 1.4), new FeatureNode(5, 0.5) };
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) };
featureMatrix[0] = featureMatrix1;
featureMatrix[1] = featureMatrix2;
featureMatrix[2] = featureMatrix3;
featureMatrix[3] = featureMatrix4;
featureMatrix[4] = featureMatrix5;
//loading target value
double[] targetValue = {1,-1,1,-1,0}; Problem problem = new Problem();
problem.l = 5; // number of training examples:训练样本数
problem.n = 5; // number of features:特征维数
problem.x = featureMatrix; // feature nodes:特征数据
problem.y = targetValue; // target values:类别 SolverType solver = SolverType.L2R_LR; // -s 0
double C = 1.0; // cost of constraints violation
double eps = 0.01; // stopping criteria Parameter parameter = new Parameter(solver, C, eps);
Model model = Linear.train(problem, parameter);
File modelFile = new File("model");
model.save(modelFile);
// load model or use it directly
model = Model.load(modelFile); Feature[] testNode = { new FeatureNode(1, 0.4), new FeatureNode(3, 0.3) };//test node
double prediction = Linear.predict(model, testNode);
System.out.print("classification result: "+prediction);
}
}
运行后得到testNode的分类结果:

3.参数说明
1. SolverType是solver的类型,可以是如下一种:
分类器:
- L2R_LR:L2-regularized logistic regression (primal)
- L2R_L2LOSS_SVC_DUAL:L2-regularized L2-loss support vector classification (dual)
- L2R_L2LOSS_SVC:L2-regularized L2-loss support vector classification (primal)
- L2R_L1LOSS_SVC_DUAL:L2-regularized L1-loss support vector classification (dual)
- MCSVM_CS:supportvector classification by Crammer and Singer
- L1R_L2LOSS_SVC:L1-regularized L2-loss support vector classification
- L1R_LR:L1-regularized logistic regression
- L2R_LR_DUAL:L2-regularized logistic regression (dual)
回归模型:
- L2R_L2LOSS_SVR:L2-regularized L2-loss support vector regression (primal)
- L2R_L2LOSS_SVR_DUAL:L2-regularized L2-loss support vector regression (dual)
- L2R_L1LOSS_SVR_DUAL:L2-regularized L1-loss support vector regression (dual)
2. C 是约束violation的代价参数 (默认为1)
3. eps 是迭代停止条件的容忍度tolerance
本程序采用的训练样本如下(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)
本文为原创博客,若转载请注明出处。
liblinear参数及使用方法(原创)的更多相关文章
- url 传递参数(特殊字符)解决方法
url 传递参数(特殊字符)解决方法 首先设置 apache 配置文件, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符号在URL中是不能直接传递的, ...
- VS2013中带命令行参数的调试方法---C++
今天先记录一下(也是传说中大神喜欢装逼的comment line)c++中向主函数int main(int argc,char** argv )传递4中方法,欢迎添加新方法, 然后可以参考别人写的很好 ...
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法
转自:http://blog.csdn.net/zzfenglin/article/details/51304084 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包.一个连接事件 ...
- Swift开发第十篇——可变参数函数&初始化方法顺序
本篇分为两部分: 一.Swift中的可变参数函数 二.初始化方法的顺序 一.Swift中的可变参数函数 可变参数函数指的是可以接受任意多个参数的函数,在 OC 中,拼接字符串的函数就属于可变参数函数 ...
- Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载
Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...
- asp.net获取当前页面文件名,参数,域名等方法。统一session验证和权限验证的方法
转:http://blog.csdn.net/llll29550242/article/details/6054323 ASP.net后台获取当前页面的文件名 System.IO.Path.GetFi ...
- NHibernate各种数据库连接参数文件配置方法说明
//NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示: <?xml version="1.0" ...
- [五]java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用
reduce-归约 看下词典翻译: 好的命名是自解释的 reduce的方法取得就是其中归纳的含义 java8 流相关的操作中,我们把它理解 "累加器",之所以加引号是因为他并不仅仅 ...
- PID控制最通俗的解释与PID参数的整定方法
转自->这里 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解.阅读本文 ...
随机推荐
- 天梯赛L2-008 最长对称子串 (字符串处理)
对给定的字符串,本题要求你输出最长对称子串的长度.例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s&quo ...
- windows+python3.6下安装fasttext+fasttext在win上的使用+gensim(fasttext)
真是坑了好久,faxttext对win并不是很友好,所以遇到了很多坑,记录下来,以供大家少走弯路. 法1:刚开始直接用pip install fasttext,最后一直报下面这个错误 “error:M ...
- Django 自定义分页类
分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypag ...
- windows环境下搭建Redis集群
转载请注明出处,原文章地址: https://www.cnblogs.com/tommy-huang/p/6240083.html Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Red ...
- PIP安装时报The repository located at pypi.douban.com is not a trusted or secure host and is being ignore
C:\WINDOWS\system32>pip install scrapyCollecting scrapy The repository located at pypi.douban.com ...
- python selenium登陆网易云音乐
from selenium import webdriver import time driver=webdriver.Chrome() driver.get("http://music.1 ...
- 码源中国.gitignore忽略文件配置
码源中国.gitignore忽略文件配置 ## Ignore Visual Studio temporary files, build results, and ## files generated ...
- 8.Python3标准库--数据持久存储与交换
''' 持久存储数据以便长期使用包括两个方面:在对象的内存中表示和存储格式之间来回转换数据,以及处理转换后数据的存储区. 标准库包含很多模块可以处理不同情况下的这两个方面 有两个模块可以将对象转换为一 ...
- ActiveMQ-如何使用JMS API?
JMS编程模型 JMS定义了Java中访问消息中间件的一组接口,主要包括ConnectionFactory.Connection.Session.Destination.MessageProducer ...
- PHP--- JSON和数组的转换
一.json_encode() <?php $arr =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_ ...