无法在Java Weka类中实例化类型实例
当我试图在Eclipse中运行这个示例Weka Java代码时,我得到了一个错误 无法实例化类型实例 即使导入weka.core.Instance时没有错误:无法在Java Weka类中实例化类型实例,java,weka,Java,Weka,当我试图在Eclipse中运行这个示例Weka Java代码时,我得到了一个错误 无法实例化类型实例 即使导入weka.core.Instance时没有错误: package wekatest; import weka.classifiers.Classifier; import weka.classifiers.Evaluation; import weka.classifiers.bayes.NaiveBayes; import weka.core.Attribute; import we
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();
}
}
}
packagewekatest;
导入weka.classifiers.Classifier;
导入weka.classifiers.Evaluation;
导入weka.classifiers.bayes.NaiveBayes;
导入weka.core.Attribute;
导入weka.core.FastVector;
导入weka.core.Instance;
导入weka.core.Instances;
公务舱司机{
公共静态void main(字符串[]args)引发异常{
//声明两个数值属性
属性Attribute1=新属性(“firstNumeric”);
属性Attribute2=新属性(“第二个数字”);
//声明标称属性及其值
FastVector fvNominalVal=新的FastVector(3);
fvNominalVal.附录(“蓝色”);
fvNominalVal.附录(“灰色”);
fvNominalVal.附录(“黑色”);
属性Attribute3=新属性(“异常”,fvNominalVal);
//声明class属性及其值
FastVector fvClassVal=新的FastVector(2);
fvClassVal.补遗(“正值”);
fvClassVal.补遗(“负数”);
属性ClassAttribute=新属性(“类”,fvClassVal);
//声明特征向量
FastVector fvWekaAttributes=新的FastVector(4);
fvWekaAttributes.addElement(Attribute1);
fvWekaAttributes.addElement(Attribute2);
fvWekaAttributes.addElement(Attribute3);
添加元素(ClassAttribute);
//创建一个空的训练集
实例isTrainingSet=新实例(“Rel”,fvWekaAttributes,10);
//集合类索引
isTrainingSet.setClassIndex(3);
//创建实例
实例iExample=新实例(4);
iExample.setValue((属性)fvWekaAttributes.elementAt(0),1.0);
iExample.setValue((Attribute)fvWekaAttributes.elementAt(1),0.5);
iExample.setValue((属性)fvWekaAttributes.elementAt(2),“灰色”);
iExample.setValue((Attribute)fvWekaAttributes.elementAt(3),“正值”);
//添加实例
isTrainingSet.add(例如);
分类器cModel=(分类器)新的朴素贝叶斯();
cModel.buildClassifier(isTrainingSet);
//测试模型
评估eTest=新评估(isTrainingSet);
测试评估模型(cModel,isTrainingSet);
//在la Weka explorer中打印结果:
字符串strSummary=eTest.toSummaryString();
System.out.println(标准摘要);
//获取混淆矩阵
double[]cmMatrix=eTest.confusionMatrix();
对于(int row_i=0;row_i),请查看下面的文档。您的错误完全可以理解,并且易于修复
您试图导入类实例:
您真正想要的是接口实例(注意名称中的单数形式):
实例不是<代码>接口
吗?实例是接口。@PM77-1我明白了,谢谢。我应该提到的是,我发现我所使用的示例是在最近对Weka Java API进行大修之前编写的,并且<代码>实例的类型发生了更改。非常感谢。我从一个独立的教程website声称它直接来自Weka的网站,但我猜有些东西被错拍了。非常感谢。