2016-09-29 7 views
0

libsvm을 사용하여 Java에서 SVM 분류자를 구현하려고합니다. 나는 다음과 같은 오류가 점점 오전 :libsvm에서 NullPointerException이 발생했습니다.

Exception in thread "main" java.lang.NullPointerException 
at libsvm.Kernel.dot(svm.java:213) 
at libsvm.Kernel.kernel_function(svm.java:172) 
at libsvm.SVC_Q.<init>(svm.java:1161) 
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) 

내가 6 훈련 예에 이진 분류를 구현하기 위해 노력하고 있습니다 :

import libsvm.*; 

import java.io.*; 
import java.io.Reader; 
import java.lang.Object; 


public class SVMclassifier { 
    public SVMclassifier(){ 
     svm_problem svmData=new svm_problem(); 
     svmData.l=6; 
     double[] lab={1,0,1,1,0,0}; 
     svmData.y=lab; 

     svm_node[][] values=new svm_node[6][3]; 

     System.out.print("I am here"); 
     svm_node AA=new svm_node(); 
     AA.index=1; 
     AA.value=0.1; 
     values[0][1]=AA; 
     AA.index=1; 
     AA.value=0.9; 
     values[0][2]=AA; 
     AA.index=1; 
     AA.value=0.9; 
     values[1][0]=AA; 
     AA.index=2; 
     AA.value=0.1; 
     values[1][1]=AA; 
     AA.index=1; 
     AA.value=0.05; 
     values[2][0]=AA; 
     AA.index=2; 
     AA.value=0.95; 
     values[2][1]=AA; 
     AA.index=1; 
     AA.value=0.06; 
     values[3][0]=AA; 
     AA.index=2; 
     AA.value=0.90; 
     values[3][1]=AA; 
     AA.index=1; 
     AA.value=0.95; 
     values[4][0]=AA; 
     AA.index=2; 
     AA.value=0.05; 
     values[4][1]=AA; 
     AA.index=1; 
     AA.value=0.90; 
     values[5][0]=AA; 
     AA.index=2; 
     AA.value=0.06; 
     values[5][1]=AA; 

     svmData.x=values; 

     svm_model paras=new svm_model(); 

     svm_parameter params =new svm_parameter(); 
     int[] bb={1,1,1}; 
     double[] cc={1,1,1}; 
     System.out.println("I am here"); 
     params.svm_type = svm_parameter.C_SVC; 
     params.kernel_type = svm_parameter.LINEAR; 
     params.degree = 3; 
     params.gamma = 0.5; // 1/num_features 
     params.coef0 = 0; 
     params.nu = 0.5; 
     params.cache_size = 100; 
     params.C = 1; 
     params.eps = 1e-3; 
     params.p = 0.1; 
     params.shrinking = 1; 
     params.probability = 0; 
     params.nr_weight = 0; 
     params.weight_label=bb; 
     params.weight=cc; 
     paras=svm.svm_train(svmData, params) ; 


     for(int i=0;i<=5;i=i+1){ 
      svm_node[] v=values[i]; 
      double u=svm.svm_predict(paras, v); 
      System.out.println(u);  
     } 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     SVMclassifier A=new SVMclassifier(); 
    } 
} 

내가 자바뿐만 아니라 libsvm 새로운 오전 : 를이 내 코드입니다. 어떤 도움이라도 환영받을 것입니다. 감사합니다

답변

0

디버깅에 대해 자세히 읽어보십시오. svm.java에서 breakpoint @ line 213을 설정하고 디버그 모드에서 프로그램을 시작하면 코드가 x [0] .index에 액세스하려고 시도합니다.

어떻게 든 코드는 0 인덱스 세트없이 svm_nodes의 배열을 생성합니다

enter image description here