0

分類問題を解決するために Weka を使用したいと思います。トレーニング データのインスタンスのセットがあります。データが次のようになっているとします。

@relation Relation1

@attribute att1 {val11, val12}
@attribute att2 {val21, val22}
@attribute class {class1, class2, class3}

@data
val11, val21, class1
val11, val22, class2
val12, val21, class3

私のコードでは、ファイルからトレーニング セットを読み取りました。J48 ツリーをトレーニングし、インスタンスの分類を試みます。ただし、分類の結果をどのように解釈するかはわかりません。

私のコードは次のとおりです。

try {
    DataSource source = new DataSource("trainingset.arff");
    Instances data = source.getDataSet();
    if (data.classIndex() == -1) {
        data.setClassIndex(data.numAttributes() - 1);
    }

    Instance xyz = new Instance(data.numAttributes());
    xyz.setDataset(data);
    xyz.setValue(data.attribute(0), "val11");
    xyz.setValue(data.attribute(1), "val21");

    String[] options = new String[1];
    options[0] = "-U"; // unpruned tree
    J48 tree = new J48(); // new instance of tree
    tree.setOptions(options); // set the options
    tree.buildClassifier(data); // build classifier

    double[] distributionForInstance = tree.distributionForInstance(xyz);
    System.out.println(distributionForInstance[0]);
    System.out.println(distributionForInstance[1]);
    System.out.println(distributionForInstance[2]);

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

出力として、次のようになります。

0.3333333333333333
0.3333333333333333
0.3333333333333333

インスタンスを分類する別の方法も試しました。

double classifyInstance = tree.classifyInstance(xyz);
            System.out.println(classifyInstance);

この場合、出力は次のようになります。

0.0

distributionForInstance および classifyInstance メソッドからの出力をどのように解釈すればよいか説明していただけますか? 私の目的は、特定のインスタンスがどのクラスに属しているかを教えてくれる分類子を作成できるようにすることです。

4

2 に答える 2

0

javadocを見てください。このdistributionForInstanceメソッドは、クラスメンバーシップ確率(インスタンスがファーストクラスにある最初の要素の確率など)を含むclassifyInstance配列を返し、クラスを返します(IDとして-クラスラベルの配列へのインデックスを考えます)。

于 2012-12-28T18:19:46.033 に答える
0

valueのメソッドを使用Attributeしてクラス ラベルを取得します。

double classifyInstance = tree.classifyInstance(xyz);
String classStr = data.classAttribute().value(classifyInstance);
于 2013-01-02T07:47:08.867 に答える