开发语言:JAVA
liblinear版本:liblinear-1.94.jar (下载地址:
1.下载 liblinear-1.94.jar,导入工程
在工程上右键---->Properties----->选中Java Build Path----->选中Libraries标签----->点击Add External JARs。
找到需要添加的jar包,确定即可。
2.创建LibLinear类 (类名自选)
代码如下:
1 packageliblinear;2
3 importjava.io.File;4 importjava.io.IOException;5 importjava.util.ArrayList;6 importjava.util.List;7
8 importde.bwaldvogel.liblinear.Feature;9 importde.bwaldvogel.liblinear.FeatureNode;10 importde.bwaldvogel.liblinear.Linear;11 importde.bwaldvogel.liblinear.Model;12 importde.bwaldvogel.liblinear.Parameter;13 importde.bwaldvogel.liblinear.Problem;14 importde.bwaldvogel.liblinear.SolverType;15
16 public classLibLinear{17 public static void main(String[] args) throwsException {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 = newProblem();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 = newParameter(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 node51 double prediction =Linear.predict(model, testNode);52 System.out.print("classification result: "+prediction);53 }54 }
运行后得到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)
本文为原创博客,若转载请注明出处。