Я выполнил оценку 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?