Machine learning 正确使用libSVM库函数的示例是什么?
我需要看看java中的一些示例代码,这样我才能了解库中定义的各种方法的正确功能,以及如何传递各种必要的参数。 其中一些是 支持向量机预测 svm_节点 支持向量机问题等。 我在谷歌上搜索了很多,但仍然没有找到实质性的东西。java文档是另一个令人失望的地方。请帮帮我!! 以下是我到目前为止编写的一些代码Machine learning 正确使用libSVM库函数的示例是什么?,machine-learning,nlp,svm,libsvm,Machine Learning,Nlp,Svm,Libsvm,我需要看看java中的一些示例代码,这样我才能了解库中定义的各种方法的正确功能,以及如何传递各种必要的参数。 其中一些是 支持向量机预测 svm_节点 支持向量机问题等。 我在谷歌上搜索了很多,但仍然没有找到实质性的东西。java文档是另一个令人失望的地方。请帮帮我!! 以下是我到目前为止编写的一些代码 import java.io.BufferedInputStream; import java.io.FileInputStream; import libsvm.*; import libsv
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import libsvm.*;
import libsvm.svm_node;
import java.io.IOException;
import java.io.InputStream;
public class trial {
public static void main(String[] args) throws IOException {
svm temp = new svm();
svm_model model;
model = svm.svm_load_model("C:\\Users\\sidharth\\Desktop\\libsvm-3.18\\windows\\svm- m.model");
svm_problem prob = new svm_problem();
prob.l = trial.countLines("C:\\Users\\sidharth\\Desktop\\libsvm-3.18\\windows\\svm-ml.test");
prob.y = new double[prob.l];
int i;
for(i=0;i<prob.l;i++)
{
prob.y[i]=0.0;
}
prob.x = new svm_node[prob.l][];
temp.svm_predict(model, /*what to put here*/);
}
public static int countLines(String filename) throws IOException {
InputStream is = new BufferedInputStream(new FileInputStream(filename));
try {
byte[] c = new byte[1024];
int count = 0;
int readChars = 0;
boolean empty = true;
while ((readChars = is.read(c)) != -1) {
empty = false;
for (int i = 0; i < readChars; ++i) {
if (c[i] == '\n') {
++count;
}
}
}
return (count == 0 && !empty) ? 1 : count;
} finally {
is.close();
}
}
}
import java.io.BufferedInputStream;
导入java.io.FileInputStream;
进口libsvm.*;
导入libsvm.svm_节点;
导入java.io.IOException;
导入java.io.InputStream;
公开庭审{
公共静态void main(字符串[]args)引发IOException{
svm temp=新svm();
svm_模型;
model=svm.svm\u load\u model(“C:\\Users\\sidharth\\Desktop\\libsvm-3.18\\windows\\svm-m.model”);
svm_问题prob=新的svm_问题();
prob.l=trial.countLines(“C:\\Users\\sidharth\\Desktop\\libsvm-3.18\\windows\\svm-ml.test”);
prob.y=新的双精度[prob.l];
int i;
对于(i=0;i来说,这非常简单
对于培训,您可以编写以下表格:
svm_train training = new svm_train();
String[] options = new String[7];
options [0] = "-c";
options [1] = "1";
options [2] = "-t";
options [3] = "0"; //linear kernel
options [4] = "-v";
options [5] = "10"; //10 fold cross-validation
options [6] = your_training_filename;
training.run(options);
BufferedReader input = new BufferedReader(new FileReader(test_file));
DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(prediction_output_file)));
svm_predict.predict(input, output, model, 0);
如果选择保存模型,则可以通过
libsvm.svm_model model = training.getModel();
如果您希望在测试数据上测试模型,可以编写以下内容:
svm_train training = new svm_train();
String[] options = new String[7];
options [0] = "-c";
options [1] = "1";
options [2] = "-t";
options [3] = "0"; //linear kernel
options [4] = "-v";
options [5] = "10"; //10 fold cross-validation
options [6] = your_training_filename;
training.run(options);
BufferedReader input = new BufferedReader(new FileReader(test_file));
DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(prediction_output_file)));
svm_predict.predict(input, output, model, 0);
希望这有帮助!svm类中定义的svm_预测方法如下公共静态双svm_预测(svm_模型s,svm_节点[]svm_nds)
我应该如何给出四个参数而不是2..?请查看第36行:在libsvm文件夹中的read me文件中,我有这三种预测方法,但它们都与您建议的方法不一样。我必须自己下载并添加此github源文件,还是将其添加到libsvm包中。public静态双svm_预测值(svm_模型,svm_节点[]x,双[]dec_值);公共静态双svm_预测(svm_模型,svm_节点[]x);公共静态双svm_预测概率(svm_模型,svm_节点[]x,双[]概率估计);
@chaitanyaShivade@SidharthKamboj如果您从下载LibSVM包,您将在java文件夹中找到文件svm_predict.java。您正在查看java/LibSVM文件夹中的所有类。