2012-05-12 33 views
2

我想分類使用SVM分類的一些數據,在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個屬性。

我的問題是,我如何找出實例屬性的權重。 我需要調查哪些屬性在分類過程中最有用。

我是機器學習領域的初學者,如此簡單的語言和示例代碼將不勝感激。

在此先感謝您的幫助。

回答

1

Weka有從屬性池中選擇屬性的選項。換句話說,它爲您提供了排序屬性的方法。它們位於weka.attributeSelection中,您有很多選擇可以使用特定評估程序和特定的搜索方法。我個人偏好我的任務是使用InfoGainAttributeEval作爲屬性評估器和Ranker作爲搜索方法。這取決於你的任務你想使用哪種組合。

查看文檔以使用與JAVA API一起使用的屬性評估程序和搜索方法,因爲您使用的代碼與Weka交互。就我個人而言,我使用GUI。