Как вы можете взять атрибут мультикласса и преобразовать его в двоичную форму с помощью weka? - PullRequest
3 голосов
/ 25 января 2012

У меня есть атрибут, скажем, numberOfChildren, который может принимать значения 0, 1, 2, 3. Я хочу предварительно обработать данные в WEKA так, чтобы они стали просто 0 или 1, атрибутом hasChildren, который равен 0 из numberOfChildren, равен 0, и 1, если numberOfChildren больше 0.

Как вы можете сделать это на стадии препроцессора Weka?

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Вы используете математическое выражение фильтр.

Рассмотрите следующий файл arff.

@relation NumberOfChildrenExample

@attribute A numeric
@attribute numberOfChildren numeric

@data
1,0
2,1
3,2
4,3
5,4
6,5

Вы используете следующую команду.

java  weka.filters.unsupervised.attribute.MathExpression -unset-class-temporarily \
-E "ifelse(A>0,1,0)" -V -R 2 -i datasets\NumberOfChildrenExample.arff
  • -V инвертировать выделение
  • -R выбрать 2 столбца, hasChildren

в противном случае этот фильтр преобразует все числовые столбцы

@attribute A numeric
@attribute numberOfChildren numeric

@data

1,0
2,1
3,1
4,1
5,1
6,1

Поскольку требуется атрибут hasChildren,вам также нужно использовать Переименовать

1 голос
/ 25 января 2012

Попробуйте перейти к weka.filters.unsupervised.attribute и отсканировать список.Дискретизация может работать, но может также разделить ваши данные пополам.MergeTwoValues ​​может работать для вас, если вы объедините 3 к 2, а затем 2 к 1, оставив вам 0 и 1.

...