使用weka和java进行测试集

时间:2015-08-17 07:30:49

标签: java weka predict

我试图使用evaluateModel函数获取测试集的预测,但是evaluation.evaluateModel(classifier, newTest,output)会引发异常。

  

线程“main”中的异常weka.core.WekaException:没有数据集   结构提供!

        import weka.classifiers.Evaluation;
        import weka.core.Attribute;
        import weka.core.Instances;
        import weka.core.converters.ConverterUtils.DataSource;
        import weka.classifiers.Evaluation;
        import weka.core.converters.ConverterUtils.DataSource;
        import weka.attributeSelection.CfsSubsetEval;
        import weka.attributeSelection.ASSearch;
        import weka.attributeSelection.BestFirst;
        import weka.classifiers.functions.LinearRegression;
        import weka.classifiers.meta.AttributeSelectedClassifier;
        import weka.filters.supervised.attribute.AttributeSelection;
        import weka.classifiers.evaluation.output.prediction.CSV;


        public void evaluateTest() throws Exception
  {
        DataSource train = new DataSource(trainingData.toString());
        Instances traininstances = train.getDataSet();
        Attribute attr=traininstances.attribute("regressionLabel");
        int trainindex=attr.index();
        traininstances.setClassIndex(trainindex); 

        DataSource test = new DataSource(testData.toString());
        Instances testinstances = test.getDataSet();
        Attribute testattr=testinstances.attribute(regressionLabel);
        int testindex=testattr.index();
        testinstances.setClassIndex(testindex); 


        AttributeSelection filter = new AttributeSelection();
        weka.classifiers.AbstractClassifier classifier ;
        filter.setSearch(this.search);
        filter.setEvaluator(this.eval);
        filter.setInputFormat(traininstances);  // initializing the filter once with training set
        Instances newTrain = AttributeSelection.useFilter( traininstances, filter);  // configures the Filter based on train instances and returns filtered instances
        Instances newTest = AttributeSelection.useFilter(testinstances, filter);          
        classifier= new LinearRegression();

        classifier.buildClassifier(newTrain);

        StringBuffer buffer = new StringBuffer();
        CSV output = new CSV();
        output.setBuffer(buffer);
        output.setOutputFile(predictFile);

        Evaluation evaluation = new Evaluation(newTrain);
        evaluation.evaluateModel(classifier, newTest,output);
}

同样适用于evaluation.crossValidateModel

0 个答案:

没有答案