Только один ранжированный атрибут, но выбрал два? InfoGain Ranker в weka - PullRequest
0 голосов
/ 07 февраля 2020

Я выполнил оценку InfoGain для своего набора данных с Ранжером на пороге 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();

Где я получаю похожий вывод:

  • мой ranked_attr равен [1, 21]1, являющимся nr_visits функцией, и 21 другое)
  • мой двойной массив rawscores НЕ содержит ЛЮБОЙ записи для 21. Он имеет 1, а затем еще одну особенность с оценкой ниже моего порога.

Что дает? Есть ли одна или две выбранные функции? Это ошибка в weka 3.8.4?

1 Ответ

0 голосов
/ 08 февраля 2020

Благодаря Eibe в списке рассылки:

AFAIK, набор индексов, возвращаемых selectedAttributes (), включает индекс атрибута класса. Я предполагаю, что атрибут 22 в ваших данных является атрибутом класса. Для атрибута класса нет оценки, потому что мы пытаемся предсказать этот атрибут.

Поскольку да, 21 действительно был моим индексом класса, который в коде равен нулю, основанный на GUI, поэтому я не сразу заметил.

...