Machine learning 正确使用libSVM库函数的示例是什么?

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

我需要看看java中的一些示例代码,这样我才能了解库中定义的各种方法的正确功能,以及如何传递各种必要的参数。 其中一些是 支持向量机预测 svm_节点 支持向量机问题等。 我在谷歌上搜索了很多,但仍然没有找到实质性的东西。java文档是另一个令人失望的地方。请帮帮我!! 以下是我到目前为止编写的一些代码

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文件夹中的所有类。