2013-05-20 57 views
1

我是java和Weka工具的初學者,我想用DecisionStump中的Logitboost算法作爲我的java代碼中的弱學習器,但我不知道這是如何工作的。我創建了一個具有六個特徵(無標籤特徵)的矢量,並且我想將它饋送到logitboost以便標記和分配它的概率。標籤是1或-1,列車/測試數據是在一個變量文件中。這是我的代碼,但算法總是返回0! 謝謝在Weka中標記未標記的實例(java代碼)

double candidate_similarity(ha_nodes ha , WeightMatrix[][] wm , LogitBoost lgb ,ArrayList<Attribute> atts){ 
     LogitBoost lgb = new LogitBoost(); 
     lgb.buildClassifier(newdata);//newdata is an arff file with some labeled data 
     Evaluation eval = new Evaluation(newdata); 
     eval.crossValidateModel(lgb, newdata, 10, new Random(1)); 
     try { 
      feature_vector[0] = IP_sim(Main.a_new.dip, ha.candidate.dip_cand); 
      feature_vector[1] = IP_sim(Main.a_new.sip, ha.candidate.sip_cand); 
      feature_vector[2] = IP_s_d_sim(Main.a_new.sip, ha); 
      feature_vector[3] = Dport_sim(Main.a_new.dport, ha); 
      freq_weight(Main.a_new.Atype, ha, freq_avg, weight_avg , wm); 
      feature_vector[4] = weight_avg; 
      feature_vector[5] = freq_avg; 
      double[] values = new double[]{feature_vector[0],feature_vector[1],feature_vector[2],feature_vector[3],feature_vector[4],feature_vector[5]}; 
      DenseInstance newInst = new DenseInstance(1.0,values); 
      Instances dataUnlabeled = new Instances("TestInstances", atts, 0); 
      dataUnlabeled.add(newInst); 
      dataUnlabeled.setClassIndex(dataUnlabeled.numAttributes() - 1); 
      double clslable = lgb.classifyInstance(inst); 
     } catch (Exception ex) { 
      //Logger.getLogger(Module2.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return clslable;} 

回答