-1

我正在编写一个需要从 weka 库中导入一些函数的包装器;但是,它向我抛出了以下错误:

未报告的异常 java.lang.Exception; 必须被抓住或宣布被扔掉

我的代码如下:

import java.io.*;
import weka.core.Instances;
import java.io.BufferedReader;
import java.io.FileReader;
import weka.core.converters.ConverterUtils.DataSource;
import java.lang.Integer;

public class wrapper
{
public static void main(String[] args)
{

    try
    {
        Runtime r = Runtime.getRuntime();
        Process p = r.exec("python frequency_counter_two.py nono 400 0");
        BufferedReader br = new BufferedReader(new         
        InputStreamReader(p.getInputStream()));
        p.waitFor();
        String line = "";
        while (br.ready())
            System.out.println(br.readLine());

    }
    catch (Exception e)
    {
    String cause = e.getMessage();
    if (cause.equals("python: not found"))
        System.out.println("No python interpreter found.");
    }

run_weka();


}



public static int run_weka()
{

DataSource source = new DataSource("features_ten_topics_10_unigrams_0_bigrams.csv");
Instances data = source.getDataSet();
// setting class attribute if the data format does not provide this information
// For example, the XRFF format saves the class attribute information as well
if (data.classIndex() == -1)
     data.setClassIndex(data.numAttributes() - 1);

/*

double percent = 66.0; 
Instances inst = data; // your full training set 
instances.randomize(java.util.Random);
int trainSize = (int) Math.round(inst.numInstances() * percent / 100); 
int testSize = inst.numInstances() - trainSize; 
Instances train = new Instances(inst, 0, trainSize); 
Instances test = new Instances(inst, trainSize, testSize);

// train classifier
Classifier cls = new J48();
cls.buildClassifier(train);
// evaluate classifier and print some statistics
Evaluation eval = new Evaluation(train);
eval.evaluateModel(cls, test);
System.out.println(eval.toSummaryString("\nResults\n======\n", false)); 

*/
}

}

知道会发生什么吗?

4

2 回答 2

0

您必须在 run_weka() 中处理从 DataSource 构造函数和 getDataSet() 抛出的异常。

如果您检查文档,您可以看到它们都抛出 java.lang.Exception:http ://crdd.osdd.net/man/wiki/weka/core/converters/ConverterUtils.DataSource.html

于 2012-05-03T05:42:36.570 回答
0

基本上它是说一些weka方法可能会抛出异常,所以你需要编写一些代码来处理这种情况。

在这种情况下,你可能会改变你的方法来做这样的事情......

public static int run_weka() {
    Instances data;

    try {
        DataSource source = new DataSource("features_ten_topics_10_unigrams_0_bigrams.csv");
        data = source.getDataSet();
    }
    catch (Exception e){
        System.out.println("An error occurred: " + e);
        return -1;
    }

    // setting class attribute if the data format does not provide this information
    // For example, the XRFF format saves the class attribute information as well
    if (data.classIndex() == -1)
         data.setClassIndex(data.numAttributes() - 1);
    /*
    Your commented code...
    */
    }
}
于 2012-05-03T13:29:56.980 回答