获取SVM分类中的属性权重/重要性

时间:2012-05-12 23:57:07

标签: machine-learning weka

我试图使用SVM分类对一些数据进行分类,在weka库中实现。我的分类代码如下:

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 个答案:

答案 0 :(得分:1)

Weka可以选择从属性池中选择属性。换句话说,它为您提供了对属性进行排名的方法。它们位于weka.attributeSelection中,您可以选择使用特定搜索方法的属性赋值器。我个人对我的任务的偏好是使用InfoGainAttributeEval作为属性评估器以及Ranker作为搜索方法。这取决于您的任务要使用的组合。

当您使用代码与Weka交互时,请参阅文档以使用属性评估程序和使用JAVA API搜索方法。就个人而言,我使用GUI。