2

wekaライブラリに実装されているSVM分類を使用していくつかのデータを分類しようとしています。分類のための私のコードは次のようになります:

BufferedReader reader = new BufferedReader(new FileReader(arffDataFile));

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

data.setClassIndex(0);

NumericToNominal filter = new NumericToNominal();

String[] options = new String[2];

options[0] = "-R";
options[1] = "1";

filter.setOptions(options);
filter.setInputFormat(data);

Instances newData = Filter.useFilter(data, filter);
newData.setClassIndex(0);

weka.classifiers.functions.LibSVM svm = new weka.classifiers.functions.LibSVM();
svm.buildClassifier(newData);

Evaluation eval = new Evaluation(newData);
eval.crossValidateModel(svm, newData, folds, new Random(1));

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

System.out.println();

Arffデータファイルは2973個のインスタンスで構成され、各インスタンスには27個の属性があります。

私の質問は、インスタンス属性の重みをどのように見つけることができるかということです。分類の過程でどの属性が最も役立つかを調査する必要があります。

私は機械学習の初心者なので、簡単な言語とサンプルコードをいただければ幸いです。

助けてくれてありがとう。

4

1 に答える 1

1

Wekaには、属性プールから属性を選択するオプションがあります。言い換えれば、それはあなたに属性をランク付けする手段を提供します。それらはweka.attributeSelectionにあり、特定の検索方法で属性エバリュエーターを使用するための選択肢がたくさんあります。私の個人的な好みは、InfoGainAttributeEvalを属性エバリュエーターとして使用し、Rankerを検索方法として使用することです。どの組み合わせを使用するかは、タスクによって異なります。

コードを使用してWekaと対話するときに、JAVA APIで属性エバリュエーターと検索メソッドを使用するには、ドキュメントを参照してください。個人的にはGUIを使っています。

于 2012-05-13T00:06:32.207 に答える