- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑 liblinear ( http://liblinear.bwaldvogel.de/ ) 的以下用法:
double C = 1.0; // cost of constraints violation
double eps = 0.01; // stopping criteria
Parameter param = new Parameter(SolverType.L2R_L2LOSS_SVC, C, eps);
Problem problem = new Problem();
double[] GROUPS_ARRAY = {1, 0, 0, 0};
problem.y = GROUPS_ARRAY;
int NUM_OF_TS_EXAMPLES = 4;
problem.l = NUM_OF_TS_EXAMPLES;
problem.n = 2;
FeatureNode[] instance1 = { new FeatureNode(1, 1), new FeatureNode(2, 1) };
FeatureNode[] instance2 = { new FeatureNode(1, -1), new FeatureNode(2, 1) };
FeatureNode[] instance3 = { new FeatureNode(1, -1), new FeatureNode(2, -1) };
FeatureNode[] instance4 = { new FeatureNode(1, 1), new FeatureNode(2, -1) };
FeatureNode[] instance5 = { new FeatureNode(1, 1), new FeatureNode(2, -0.1) };
FeatureNode[] instance6 = { new FeatureNode(1, -0.1), new FeatureNode(2, 1) };
FeatureNode[] instance7 = { new FeatureNode(1, -0.1), new FeatureNode(2, -0.1) };
FeatureNode[][] testSetWithUnknown = {
instance5,
instance6,
instance7
};
FeatureNode[][] trainingSetWithUnknown = {
instance1,
instance2,
instance3,
instance4
};
problem.x = trainingSetWithUnknown;
Model m = Linear.train(problem, param);
for( int i = 0; i < trainingSetWithUnknown.length; i++)
System.out.println(" Train.instance = " + i + " => " + Linear.predict(m, trainingSetWithUnknown[i]) );
System.out.println("---------------------");
for( int i = 0; i < testSetWithUnknown.length; i++)
System.out.println(" Test.instance = " + i + " => " + Linear.predict(m, testSetWithUnknown[i]) );
这是输出:
iter 1 act 1.778e+00 pre 1.778e+00 delta 6.285e-01 f 4.000e+00 |g| 5.657e+00 CG 1
Train.instance = 0 => 1.0
Train.instance = 1 => 0.0
Train.instance = 2 => 0.0
Train.instance = 3 => 0.0
---------------------
Test.instance = 0 => 1.0
Test.instance = 1 => 1.0
Test.instance = 2 => 0.0
我需要概率预测,而不是整数(硬)预测。命令行有一个选项 -b ,但我找不到任何可以在代码中直接使用该函数的东西。另外,查看代码内部( https://github.com/bwaldvogel/liblinear-java/blob/master/src/main/java/de/bwaldvogel/liblinear/Predict.java );显然,没有通过在代码中直接使用来进行概率预测的选项。那是对的吗?
更新:我最终使用了 liblinear 代码形式 https://github.com/bwaldvogel/liblinear-java .在文件 Predict.java 中,我更改了
private static boolean flag_predict_probability = true;
到
private static boolean flag_predict_probability = false;
和使用
SolverType.L2R_LR
但仍然得到整数类。有什么想法吗?
最佳答案
要使用概率,需要更改代码。预测是在
public static double predictValues(Model model, Feature[] x, double[] dec_values) {
Linear.java 文件中的函数:
if (model.nr_class == 2) {
System.out.println("Two classes ");
if (model.solverType.isSupportVectorRegression()) {
System.out.println("Support vector");
return dec_values[0];
}
else {
System.out.println("Not Support vector");
return (dec_values[0] > 0) ? model.label[0] : model.label[1];
}
}
需要改成
if (model.nr_class == 2) {
System.out.println("Two classes ");
if (model.solverType.isSupportVectorRegression()) {
System.out.println("Support vector");
return dec_values[0];
}
else {
System.out.println("Not Support vector");
return dec_values[0];
}
}
请注意,输出仍然不是概率,而只是权重和特征值的线性组合。如果你将它交给 softmax 函数,它将成为 [0, 1] 中的概率。
此外,确保选择逻辑回归:
SolverType.L2R_LR
关于java - 使用 liblinear (java) 进行概率预测,直接在代码中使用分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23780306/
我将使用 LIBLINEAR 为基于转换的依赖关系解析做一些工作。但我很困惑如何使用它。如下: 我为基于转换的依赖解析的训练和测试过程设置了 3 个特征模板: 1. the word in the t
我正在尝试 libSVM 包,使用 RBF 和线性分类,并且我遵循(我认为)其自述文件中的所有建议。 我有一个大文件要训练(70K),所以我尝试使用 liblinear 而不是 RBF。 唯一的问题是
在 LIBLINEAR docs ,我们有 matlab> model = train(training_label_vector, training_instance_matrix [,'libli
大多数机器学习分类器在遇到没有以前见过的特征的实例时,会将该示例分类为训练数据中最常见的类。 liblinear-java 的情况似乎并非如此我想知道为什么会这样。下面是一些示例代码,我在其中构造
我是 SVM 的初学者,我已经成功实现了一类分类。现在我想了解多类分类,这是非常困惑的。 我浏览了How to do multi class classification using Support
这些天我正在做一个使用 libLinear 作为内核的分类工作。并将两种类型的特征集训练成两个模型来对查询输入进行预测。希望利用 Late Fusion 来组合模型的两个结果,我更改了 libline
我一直在寻找快速线性SVM库,我遇到了两个最重要的库Liblinear和Pegasos,从liblinear提出的论文来看,它看起来像liblinaer 的性能优于 Pegasos。然而,pegaso
我经常将实例权重与 Libsvm 结合使用来解决分类问题。 http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instan
我想在我的 C++ 源代码中直接使用 LIBLINEAR ( http://www.csie.ntu.edu.tw/~cjlin/liblinear )。虽然在 MATLAB/JAVA 等语言中使用它
libsvm和 liblinear都是实现支持向量机的软件库。有什么不同?这些差异如何使 liblinear 比 libsvm 更快? 最佳答案 在实践中,在 libsvm 中实现的 SMO 算法(适
我正在尝试对一些输入进行分类(文本分类:10,000 多个示例和 100,000 多个特征) 而且我读到使用 LibLinear 对于此类任务要快得多/内存效率更高,因此,我已经将我的 LibSvm
考虑 liblinear ( http://liblinear.bwaldvogel.de/ ) 的以下用法: double C = 1.0; // cost of constraints v
我正在尝试操作 liblinear 库 (java),并且我正在使用一个 super 简单的示例,其中包含找到的模板 here .案例是判断一个形状是正方形还是长方形。 这是我的代码: import
为 Adrian 运行线性二进制模式的代码。该程序运行但给出以下警告: C:\Python27\lib\site-packages\sklearn\svm\base.py:922: Convergen
我需要使用 Liblinear 实现多分类分类器。 Accord.net 机器学习框架提供了所有 Liblinear 属性,除了 Crammer 和 Singer 的多类分类公式。 This is t
我正在使用 LIBLINEAR 训练一个简单的逻辑回归分类器。只有3个特征,标签是二进制0-1。 示例输入文件: 1 1:355.55660999775586 2:-3.401379785
我正在用 Node.js 编写一个机器学习程序,我想使用 LibLinear 和 SvmPerf 等库,这些库在 Node.js 中不可用。因此,对于训练,我只需创建一个包含训练样本的文件,并在该文件
我正在模拟数据并比较 glm.fit 、 bigglm、speedglm、glmnet、LiblineaR 的二进制 logit 模型。 testGLMResults_and_speed testG
我是一名优秀的程序员,十分优秀!