2

Netbeans IDEの外部でアプリケーションを実行しようとすると、いくつかの問題が発生します。私は自分のクラスとメソッドのいくつかを呼び出しているGUIを持っており、それが次にいくつかのWekaクラスを呼び出しています。Wekaクラスは、GUIに表示される出力を提供しています。これをIDEで実行すると、出力が正しく表示されます。ただし、アプリケーションのjarを作成し、IDEの外部からjarを実行しようとすると、Wekaクラスからの出力が表示されません。ただし、データの解析と処理を行うために使用しているクラスは正常に機能しています。最初は、外部jarが正しく含まれていない問題だと思っていましたが、* PROJECT_HOME * / dist / libフォルダーを確認したところ、weka.jarファイルがそこにあるようでした。誰かがこれについて私を助けてくれますか?

前もって感謝します!

4

1 に答える 1

1

1 つ言えることは、IDE 以外で 1 つのアプリケーションを開発したということです。アプリケーション ディレクトリで WEKA パッケージ フォルダーを取得し、それをパッケージとして Java クラス アプリケーションにインポートして、WEKA 分類子またはその他の必要な作業を直接呼び出すだけです。たとえば、コードが機能し、それ自体を物語るPART Classifierを使用しています。

import java.io.*;
import java.util.Random;
import weka.core.Instances;
import weka.classifiers.Classifier;
import weka.classifiers.rules.PART;
import weka.classifiers.Evaluation;


public class Prediction 
 {

     public double Create(String Rf1,String Rf2,String Rf3) throws Exception
    {
        input p = new input();
    double res=p.classify(Rf1,Rf2,Rf3);
    return res;
    }
 }


  class input
    {
        public double classify(String file1,String file2,String file3) throws Exception
        {
     // ------------> 1. Reading from an ARFF file

            FileReader fr = new FileReader(file1);
            BufferedReader br = new BufferedReader(fr);

                Instances data = new Instances(br);
            br.close();

            // setting class attribute
            data.setClassIndex(data.numAttributes() - 1);

            // -------------> 2. Building a Classifier

            String[] options = new String[1];
            options[0] = "M 2 -C 0.25 -Q 1"; // confidenceFactor = 0.25, minNumObject = 2
            PART tree = new PART(); // new instance of tree
            tree.setOptions(options); // set the options
            tree.buildClassifier(data); // build classifier
            // -------------> 3. Cross-validation

            Evaluation eval = new Evaluation(data);
            eval.crossValidateModel(tree, data, 10, new Random(1));

            // check --------------> 4. Train

            Instances train = new Instances(data);
            Instances test = new Instances(train);

            // train classifier
            Classifier cls = new PART();
            cls.buildClassifier(train);

            // evaluate classifier and print some statistics
            Evaluation eval1 = new Evaluation(train);
            eval1.evaluateModel(cls, test);

            //System.out.println(eval1.toSummaryString("\nResults\n======\n", false));

            // ----------------> 5. Statistics

            String[] options1 = new String[2];
            options1[0] = "-t";
            options1[1] = file1;

            // ----------------> 6. Classifying instances

            // load unlabeled data
            FileReader fr2 = new FileReader(file2);
            BufferedReader br2 = new BufferedReader(fr2);

            Instances unlabeled = new Instances(br2);

            // set class attribute
            unlabeled.setClassIndex(unlabeled.numAttributes() - 1);

            // create copy
            Instances labeled = new Instances(unlabeled);  
            double clsLabel[];
            clsLabel = new double[100];
            int count = 0;

            // label instances
            for (int i = 0; i < unlabeled.numInstances(); i++)
            {
                clsLabel[i] = tree.classifyInstance(unlabeled.instance(i));
                labeled.instance(i).setClassValue(clsLabel[i]);
                count++;
            }

            // save labeled data
            FileWriter fw = new FileWriter(file3);
            BufferedWriter bw = new BufferedWriter(fw);

            bw.write(labeled.toString());
            bw.newLine();
            bw.flush();
            bw.close();
            fw.close();

                for(int i=0;i<count;i++)
                System.out.println(clsLabel[i]);
            return clsLabel[0];
        } // main
    } // class
于 2013-02-08T10:46:53.013 に答える