Использование AddExpression/MathExpression в Weka

Я работаю над очень простым заданием WEKA и пытаюсь использовать WEKA для предварительной обработки данных из графического интерфейса (самая последняя версия). Я пытаюсь сделать очень простые операторы if и математические операторы в поле выражения при двойном щелчке MathExpression, и у меня не было никакого успеха. Например, я хочу сделать

if (a5 == 2 || a5 == 0) then y = 1; else y = 0

Многие различные варианты этого не сработали для меня, и я также не понимаю, как ссылаться на «y» или нужна ли ссылка внутри строки.

Другой пример — -abs(log(a7)–3), который мне тоже не удалось вычислить. Любые идеи о том, как заставить эти заявления работать?


person sarina    schedule 06.09.2012    source источник


Ответы (1)


Из javadoc MathExpression

Буква «А» относится к значению обрабатываемого атрибута. Доступ к другим значениям атрибутов (только числовым) можно получить через переменные A1, A2, A3, ...

Ваш фильтр применяется ко всем атрибутам вашего набора данных. Если я загружу набор данных радужной оболочки и применю следующий фильтр.

weka.filters.unsupervised.attribute.MathExpression -E log(A).

ваш атрибут, значения sepallength изменяются следующим образом.

Before Filter      After Filter           
Minimum 4.3    Minimum  1.459
Maximum 7.9    Maximum  2.067
Mean    5.843  Mean 1.755
StdDev  0.828  StdDev   0.141

Также, если вы посмотрите на javadoc, там нет функции if else, но есть функция ifelse. Поэтому вы должны написать что-то вроде

ifelse ( (A == 2 || A == 0), 1,0 ) 

Также этот фильтр применяется ко всем атрибутам. Если вы хотите изменить только один атрибут и в соответствии с другими значениями атрибута; затем вам нужно использовать «Игнорировать параметр диапазона» и использовать A1, A2 для ссылки на другие значения атрибута.

если вам нужно добавить новый атрибут, используйте AddExpression .

Фильтр экземпляра, создающий новый атрибут путем применения математического выражения к существующим атрибутам.

person Atilla Ozgur    schedule 06.09.2012
comment
Спасибо за ответ, я считаю, что это правильно. Однако мне не удается заставить MathExpression применяться к новому атрибуту, для которого еще не установлены значения, поэтому, возможно, проблема в этом. Есть идеи по этому поводу? - person sarina; 08.09.2012
comment
@sarina, если этот ответ работает для вас, отметьте его как ответ - person Atilla Ozgur; 12.09.2012