2012-04-20 8 views
0

私はWEKA APIの使用方法を理解していますを最初にInstancesを作成するプログラムにロードします。これらはこのデータセットで訓練されたClassifierに与えられます。今では、ラベルなしで新しいテスト・データセットを与え、WEKA APIでそのインスタンスのラベルが何であるかわかるようにしたいと考えています。それはどうですか?WEKAからの結果の取得方法

答えて

2

あなたはあなたのトレーニングとテストのインスタンスはまったく同じになりますClassifier.classifyInstance(インスタンス)

http://weka.sourceforge.net/doc/weka/classifiers/Classifier.html

+0

この二重の値はどのようなものですか?クラスの指標は予測されていますか? – prometheuspk

+0

@ Prometheus87 Classifier.classifyInstance(Instance)は、Instance.classValue(クラスの内部表現)に対応するdoubleを返します。ここには良いチュートリアルがあります:http://weka.wikispaces.com/Use+WEKA+in+your+Java+code – daveb

0

を使用しています。

特徴量1、特徴量2 .......、特徴量のN、クラス値 特徴量1、特徴量2 .......、特徴量のN、クラス値

モデルをテストセットに適用するとき、Wekaはモデルにインスタンスのクラス値を提供しません。それどころか、「ちょっと、クラシファイア、訓練セットから学んだときにクラスを各テストインスタンスに割り当てる方法を見てみましょう。次に、分類器モデルは、各テストインスタンスに、トレーニングセットから学習したものからクラスを割り当てる。 Wekaはそれを比較し、精度、リコール、fスコア、ROC、AUC、エラーなどの結果を提供します。したがって、要約すると、テストインスタンスはクラス値を持ちます。除外しないでください。それ以外の場合は、 "トレーニングとテストセットが互換性がありません"のようなエラーが表示されます。

+0

こんにちは。私は分類器を訓練しましたが、今は 'インスタンス 'を渡すことが問題です。 1つのインスタンスに100個の数値機能があり、ラベルやクラスとして1個の文字列があります。インスタンスを初期化できません。コンストラクタが 'Instance(double weight、double [] attrValues)'であることがわかり、classifyインスタンスで 'weka.core.UnassignedDatasetException'がスローされ、インスタンスにはデータセットへのアクセス権がないと表示されます。 attrValues []に101文字目の文字列(文字列)を追加することはできません。これは 'double '型なので、ここで間違っていますか? – prometheuspk

+0

問題は私が新しい 'Instance'にデータを割り当てていないことでした。これは 'Instance.setData()'によって行われなければなりませんでした。そしてClassifierが訓練されたInstancesオブジェクトを渡します – prometheuspk

関連する問題