liblinear(在java中)简单的例子是行不通的
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了liblinear(在java中)简单的例子是行不通的,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2900字,纯文字阅读大概需要5分钟。
内容图文
![liblinear(在java中)简单的例子是行不通的](/upload/InfoBanner/zyjiaocheng/770/ed35d5c348bf49768c2af4266ce13d00.jpg)
我正在尝试操作liblinear库(java),我正在使用一个超级简单的例子,模板找到here.
案例是确定形状是正方形还是矩形.
这是我的代码:
import java.io.File;
import java.io.IOException;
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 Main {
static int NUM_OF_TS_EXAMPLES = 8;
// 1 = square, -1 = non-square
static double[] GROUPS_ARRAY = {1, 1, 1, 1, -1, -1, -1, -1};
// squares
static FeatureNode[] shape1 = {new FeatureNode(1, 2), new FeatureNode(2, 2)};
static FeatureNode[] shape2 = {new FeatureNode(1, 4), new FeatureNode(2, 4)};
static FeatureNode[] shape3 = {new FeatureNode(1, 9), new FeatureNode(2, 9)};
static FeatureNode[] shape4 = {new FeatureNode(1, 10), new FeatureNode(2, 10)};
// not squares
static FeatureNode[] shape5 = {new FeatureNode(1, 5), new FeatureNode(2, 6)};
static FeatureNode[] shape6 = {new FeatureNode(1, 3), new FeatureNode(2, 4)};
static FeatureNode[] shape7 = {new FeatureNode(1, 6), new FeatureNode(2, 9)};
static FeatureNode[] shape8 = {new FeatureNode(1, 4), new FeatureNode(2, 2)};
// unknown squares
static FeatureNode[] unkown1 = {new FeatureNode(1, 32), new FeatureNode(2, 32)};
static FeatureNode[] unkown2 = {new FeatureNode(1, 4), new FeatureNode(2, 2)};
static FeatureNode[] unkown3 = {new FeatureNode(1, 4), new FeatureNode(2, 2)};
static FeatureNode[][] trainingSetWithUnknown = {
shape1,
shape2,
shape3,
shape4,
shape5,
shape6,
shape7,
shape8
};
public static void main(String[] args) throws IOException {
Problem problem = new Problem();
// number of training examples
problem.l = NUM_OF_TS_EXAMPLES;
// number of features
problem.n = NUM_OF_TS_EXAMPLES + 1;
// problem.x = ... // feature nodes
problem.x = trainingSetWithUnknown;
// problem.y = ... // target values
problem.y = GROUPS_ARRAY;
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[] instance = new FeatureNode[5];
double prediction = Linear.predict(model, instance);
}
}
运行后我在我的控制台中得到这个结果:
iter 1 act 1.969e-02 pre 1.966e-02 delta 4.283e-03 f 5.545e+00 |g| 9.192e+00 CG 1
Exception in thread "main" java.lang.NullPointerException
at de.bwaldvogel.liblinear.Linear.predictValues(Linear.java:370)
at de.bwaldvogel.liblinear.Linear.predict(Linear.java:316)
at Main.main(Main.java:73)
我究竟做错了什么?
解决方法:
我猜NullPointerException的原因是你将未初始化的特征数组传递给预测函数 – 尝试首先初始化实例:
Feature[] instance = { new FeatureNode(1, 4), new FeatureNode(2, 2) };
内容总结
以上是互联网集市为您收集整理的liblinear(在java中)简单的例子是行不通的全部内容,希望文章能够帮你解决liblinear(在java中)简单的例子是行不通的所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】