只有一个排名属性,但选择了两个? weka中的InfoGain Ranker

问题描述 投票:0回答:1

我已经在我的数据集上运行了一个InfoGain评估,Ranker的阈值为0.1。

我通过GUI的输出说:

Search Method:
    Attribute ranking.
    Threshold for discarding attributes:   0.1   

Attribute Evaluator (supervised, Class (nominal): 23 class):
    Information Gain Ranking Filter

Ranked attributes:
 0.141    2 nr_visits

Selected attributes: 2 : 1

在我的java实现中,我做同样的事情:

Ranker ranker = new Ranker();
ranker.setGenerateRanking(true);
ranker.setThreshold(0.1);

AttributeSelection attsel = new AttributeSelection();
InfoGainAttributeEval eval = new InfoGainAttributeEval();

attsel.setEvaluator(eval);
attsel.setSearch(ranker);

attsel.SelectAttributes(instances);

int[] ranked_attr = attsel.selectedAttributes();
double[][] rawscores = attsel.rankedAttributes();

在哪里得到类似的输出:

  • 我的排名属性为[1, 21]1nr_visits功能,而21为另一个)
  • 我的rawscores双数组不包含21的任何条目。它具有1,然后是得分低于我的阈值的另一个功能。

什么给了?是否有一个或两个选定的功能?这是weka 3.8.4中的错误吗?

weka
1个回答
0
投票

感谢Eibe在邮件列表上:

AFAIK,selectedAttributes()返回的索引集包括类属性的索引。我假设数据中的属性22是类属性。 class属性没有分数,因为它是我们试图预测的属性。

因为是,21确实是我的类索引,该类索引在代码中从零开始,在GUI中从1开始,这就是为什么我没有立即注意到。

© www.soinside.com 2019 - 2024. All rights reserved.