2016-08-21 114 views
-2

當我嘗試運行這個例子Weka的Java代碼在Eclipse中我得到的錯誤無法實例類型的實例在Java中的Weka類

無法實例類型實例

即使沒有錯誤上import weka.core.Instance

package wekatest; 

import weka.classifiers.Classifier; 
import weka.classifiers.Evaluation; 
import weka.classifiers.bayes.NaiveBayes; 
import weka.core.Attribute; 
import weka.core.FastVector; 
import weka.core.Instance; 
import weka.core.Instances; 

public class Driver { 

    public static void main(String[] args) throws Exception{ 

     // Declare two numeric attributes 
     Attribute Attribute1 = new Attribute("firstNumeric"); 
     Attribute Attribute2 = new Attribute("secondNumeric"); 

     // Declare a nominal attribute along with its values 
     FastVector fvNominalVal = new FastVector(3); 
     fvNominalVal.addElement("blue"); 
     fvNominalVal.addElement("gray"); 
     fvNominalVal.addElement("black"); 
     Attribute Attribute3 = new Attribute("aNominal", fvNominalVal); 

     // Declare the class attribute along with its values 
     FastVector fvClassVal = new FastVector(2); 
     fvClassVal.addElement("positive"); 
     fvClassVal.addElement("negative"); 
     Attribute ClassAttribute = new Attribute("theClass", fvClassVal); 

     // Declare the feature vector 
     FastVector fvWekaAttributes = new FastVector(4); 
     fvWekaAttributes.addElement(Attribute1);  
     fvWekaAttributes.addElement(Attribute2);  
     fvWekaAttributes.addElement(Attribute3);  
     fvWekaAttributes.addElement(ClassAttribute); 

     // Create an empty training set 
     Instances isTrainingSet = new Instances("Rel", fvWekaAttributes, 10);  

     // Set class index 
     isTrainingSet.setClassIndex(3); 

     // Create the instance 
     Instance iExample = new Instance(4); 
     iExample.setValue((Attribute)fvWekaAttributes.elementAt(0), 1.0);  
     iExample.setValue((Attribute)fvWekaAttributes.elementAt(1), 0.5);  
     iExample.setValue((Attribute)fvWekaAttributes.elementAt(2), "gray"); 
     iExample.setValue((Attribute)fvWekaAttributes.elementAt(3), "positive"); 

     // add the instance 
     isTrainingSet.add(iExample); 
     Classifier cModel = (Classifier)new NaiveBayes(); 
     cModel.buildClassifier(isTrainingSet); 

     // Test the model 
     Evaluation eTest = new Evaluation(isTrainingSet); 
     eTest.evaluateModel(cModel, isTrainingSet); 

     // Print the result à la Weka explorer: 
     String strSummary = eTest.toSummaryString(); 
     System.out.println(strSummary); 

     // Get the confusion matrix 
     double[][] cmMatrix = eTest.confusionMatrix(); 
     for(int row_i=0; row_i<cmMatrix.length; row_i++){ 
      for(int col_i=0; col_i<cmMatrix.length; col_i++){ 
       System.out.print(cmMatrix[row_i][col_i]); 
       System.out.print("|"); 
      } 
      System.out.println(); 
     } 
    } 
} 
+0

是不是'實例''接口'? –

+0

實例是一個接口。 – garnulf

+0

@ PM77-1我看到了謝謝。 –

回答

2

看看下面的文檔。你的錯誤是完全可以理解的,並且易於修復。

您試圖導入的類實例:

http://weka.sourceforge.net/doc.dev/weka/core/Instances.html

你真正想要的是接口實例(注意名稱單數形式):

http://weka.sourceforge.net/doc.dev/weka/core/Instance.html

+0

非常感謝。我從一個獨立的教程網站上得到了這個例子,它聲稱它是直接來自Weka的網站,但我猜想有些東西被誤導了。非常感激。 –