- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用libsvm java 包来执行句子分类任务。我有3节课。每个句子都表示为一个大小为435的向量。vector_file的格式如下:
1 0 0.12 0 0.5 0.24 0.32 0 0 0 ... 0.43 0
第一个数字表示类别标签,其余数字表示向量。
以下是我解决svm_problem的方法:
public void makeSvmProb(ArrayList<Float> inputVector,float label,int p){
// p is 0 to 77 (total training sentences)
int idx=0,count=0;
svm_prob.y[p]=label;
for(int i=0;i<inputVector.size();i++){
if(inputVector.get(i)!=0) {
count++; // To get the count of non-zero values
}
}
svm_node[] x = new svm_node[count];
for(int i=0;i<inputVector.size();i++){
if(inputVector.get(i)!=0){
x[idx] = new svm_node();
x[idx].index = i;
x[idx].value = inputVector.get(i);
idx++;
}
}
svm_prob.x[p]=x;
}
参数设置:
param.svm_type = svm_parameter.C_SVC;
param.kernel_type = svm_parameter.RBF;
param.degree = 3;
param.gamma = 0.5;
param.coef0 = 0;
param.nu = 0.5;
param.cache_size = 40;
param.C = 1;
param.eps = 1e-3;
param.p = 0.1;
param.shrinking = 1;
param.probability = 0;
param.nr_weight = 0;
param.weight_label = new int[0];
param.weight = new double[0];
执行程序时,经过 2 次迭代后,我收到 NullPointerException。我无法弄清楚出了什么问题。
这是出现的错误:
optimization finished, #iter = 85
nu = 0.07502654779820772
obj = -15.305162227093849, rho = -0.03157808477381625
nSV = 47, nBSV = 1
*
optimization finished, #iter = 88
nu = 0.08576821199868506
obj = -17.83925196551639, rho = 0.1297986754900152
nSV = 51, nBSV = 3
Exception in thread "main" java.lang.NullPointerException
at libsvm.Kernel.dot(svm.java:207)
at libsvm.Kernel.<init>(svm.java:199)
at libsvm.SVC_Q.<init>(svm.java:1156)
at libsvm.svm.solve_c_svc(svm.java:1333)
at libsvm.svm.svm_train_one(svm.java:1510)
at libsvm.svm.svm_train(svm.java:2067)
at SvmOp.<init>(SvmOp.java:130)
at Main.main(Main.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
知道出了什么问题吗?
最佳答案
NullPointerException
在 svm.class
的第 207 行抛出。研究源代码显示:
static double dot(svm_node[] x, svm_node[] y)
{
double sum = 0;
int xlen = x.length;
...
}
第 207 行是 int xlen = x.length;
。因此,在这种情况下,我们看到您的 svm_node
(或向量)之一为 null
。
因此,我们无法真正为您提供帮助,因为我们需要更多信息/源代码来调试它。
我会采取以下策略:
在调试器中完成 svm_problem
的构建后,调查 svm_node
对象并查找 null
值。
检查 svm_problem
的构建过程。问题可能就在那里。
另一种可能性是更改您的数据格式并符合官方 LIBSVM 格式:
如 documentation 中所述,数据格式使用稀疏数据格式,应该是这样的:
<label> 0:i 1:K(xi,x1) ... L:K(xi,xL)
升序整数指的是属性或特征id,这是向量的内部表示所必需的。
我之前回答过类似的问题here并添加了数据格式的示例。
这种格式可以直接读取,因为构建 svm_problem
的代码包含在库中。
关于machine-learning - libsvm-java 经过几次训练迭代后抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930429/
我正在考虑使用 LibSVM我正在创建所需的特征向量。 在几乎所有的示例数据中,特征都有一个顺序,例如: +1 1:3 2:1 3:5 4:2 10:8 想知道这个顺序是否重要,例如: +1 4:2
对于相同的数据集和参数,LibSVM 和 scikit-learn 的 SVM 实现的精度不同,尽管 scikit-learn also uses LibSVM internally 。 我忽略了什么
当我打开 LIBSVM 训练数据的示例文件时,我无法理解文件结构。有人可以告诉我如何制作吗? 以下是我用于预测歌曲的歌曲作者的训练数据(作为示例): 特征1:歌词中“爱”字的数量 特征2:歌词中“ f
当我打开 LIBSVM 训练数据的示例文件时,我无法理解文件结构。有人可以告诉我怎么做吗? 下面是我预测歌曲作者的训练数据(作为例子): 特征一:歌词中“爱”字的数量 特征2:歌词中“ friend
我是 python 的新手,我正在尝试使用 libsvm。我正在尝试在 grid.py 的帮助下进行交叉验证。我从数据库中获取数据,因此它不是稀疏形式。有什么办法可以按照grid.py中数据格式的要求
我有一个 LIBSVM 缩放模型(使用 svm-scale 生成),我想将它移植到 PySpark。我天真地尝试了以下方法: scaler_path = "path to model" a = Min
我不明白LIBLINEAR API中bias参数的含义。为什么在训练时由用户指定?难道它不应该只是从分离超平面到原点的距离,这是学习模型的参数吗? 这来自自述文件: struct problem {
对于 LibSVM。 在'A Practical Guide to Support Vector Classification'中建议使用m数来表示m-category属性。例如 {red, gree
是否有任何脚本可以将制表符分隔的数据文件转换为 libSVM 数据格式?例如我未标记的数据: -1 9.45 1.44 8.90 -1 8.12 7.11 8.90-1 8.11 6.12 8.78
我的数据有一个奇怪的结果,我想知道您或其他任何人是否对此有任何见解.. 我有大约 5000 个数据和大约 16000 个属性,我用每个类的 2000 个数据(我只有两个类)训练了我的 RBF svm(
我想知道为什么 libSVM 在使用或不使用概率进行预测时会给出不同的准确度结果,并且我在 this page 找到了常见问题解答其中说 Q: Why using svm-predict -b 0 a
我正在使用 LIBSVM for matlab。当我使用回归 SVM 时,它输出的概率估计是一个空矩阵,而在使用分类时此功能运行良好。这是正常行为吗,因为在 LIBSVM 自述文件中它说: -b pr
我想知道为什么 libSVM 在使用或不使用概率进行预测时会给出不同的准确度结果,并且我在 this page 找到了常见问题解答其中说 Q: Why using svm-predict -b 0 a
我已经扩展了我的训练数据并尝试进行交叉验证以获得最佳参数,但我不知道该怎么做。我尝试读取缩放后的训练数据并将它们分配给 svm_problem 变量: svm_node My_svm_node[164
我正在使用 LibSVM 进行一些多类分类。我使用 LibSVM 的 MATLAB 接口(interface)训练模型。然后,我以 C 语言可以识别的格式保存该模型。现在我想在 C 语言中使用 svm
我的目标是制作一个多类分类器,用于处理不同的文件,这些文件将标记至少两个类(或标签)。这些文件是议会倡议的,因此每个文件都将在同义词库中以至少一对值进行索引。 我在Python版本中使用“libsvm
我打算在 MATLAB 中安装 libSVM 并下载了该文件。 但是在 MATLAB 中似乎已经有了函数,svmtrain、svmpredict 等等。 MATLAB 是否已附带 LIBSVM? 最佳
我想使用从 Libsvm 模型派生的参数来预测新数据(不是在 matlab 中)。我想问模型中的支持向量(nSV,sv_coef,SVs)是否是按照模型中Label的顺序排列的?下面是使用线性核从fi
我有一个数据集,负标签值的数量是正标签值数量的 163 倍,所以我有一个不平衡的数据集。我已经尝试过了: model = svmtrain(trainLabels, trainFeatures, '-
我正在使用 libsvm 进行多元回归。我有一些缺失值的数据。例如,我有 10 个实例,每个实例有 10 个节点,每个节点有 10 个与其关联的链接。我需要使用 10 个实例来训练这 10 个节点。但
我是一名优秀的程序员,十分优秀!