分類問題を解決するために 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 メソッドからの出力をどのように解釈すればよいか説明していただけますか? 私の目的は、特定のインスタンスがどのクラスに属しているかを教えてくれる分類子を作成できるようにすることです。