在java代码中使用Weka中的PCA过滤器是不可能的

在java代码中使用Weka中的PCA过滤器是不可能的,java,weka,pca,Java,Weka,Pca,我必须在具有大量属性的数据集上用java实现一个分类器 我的问题是当我想在数据集上使用pca过滤器时。我用Weka的Explorer预处理界面完成了这项工作,它可以工作,我得到了20个属性 我不可能创建过滤器,控制台会返回一个我不理解的错误 下面是一个使用过滤器的简单类: import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; import weka.classifiers.bayes.

我必须在具有大量属性的数据集上用java实现一个分类器

我的问题是当我想在数据集上使用pca过滤器时。我用Weka的Explorer预处理界面完成了这项工作,它可以工作,我得到了20个属性

我不可能创建过滤器,控制台会返回一个我不理解的错误

下面是一个使用过滤器的简单类:

import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.classifiers.bayes.NaiveBayes;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.PrincipalComponents;

public class ClassifierWithFilter{
        public static void main(String args[]) throws Exception{
        //load dataset
        DataSource source = new DataSource("path/trainingfile.arff");
        Instances trainingSet = source.getDataSet();
        //set class index to the last attribute
        trainingSet.setClassIndex(trainingSet.numAttributes()-1);

        //filter
        PrincipalComponents pca = new PrincipalComponents();
        Instances newTrainingSet= Filter.useFilter(dataSet, pca);
        System.out.println(newTrainingSet);

        //the base classifier
        NaiveBayes nb = new NaiveBayes();
        nb.buildClassifier(trainingSet);
        System.out.println(nb);
    }
}
错误:

Exception in thread "main" java.lang.NoClassDefFoundError: no/uib/cipr/matrix/Matrix
   at weka.api.ClassifierWithFilter.main(ClassifierWithFilter.java:38)
Caused by: java.lang.ClassNotFoundException: no.uib.cipr.matrix.Matrix
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more
如果我把3行放在//过滤器下面,错误就会消失


我正在使用weka-3-8-1的jar包。

我终于找到了错误,我只使用了weka包的早期版本:weka 3.6.0,错误消失了