Как выполнить преобразование атрибутов из номинальных в числовые в WEKA?

У меня есть набор данных, содержащий смесь числовых и номинальных атрибутов. Я хочу преобразовать все номинальные атрибуты в наборе данных в числовые, чтобы я мог применить ядро ​​классификатора SVM (PolyKernel и RBFKernel), которое работает только с числовыми атрибутами. Любая помощь будет принята с благодарностью. К вашему сведению, я уже пробовал NominalToBinary Filter (Это не совсем то, что я хочу)


person user1228310    schedule 25.11.2014    source источник
comment
Удалось ли вам это решить? Я столкнулся с той же проблемой.   -  person Aniket Rangrej    schedule 22.08.2018


Ответы (3)


Вы можете преобразовать все имена меток для атрибута с помощью RenameNominalValues ​​. Обратите внимание, что все эти новые метки должны быть числовыми, поэтому вам может потребоваться изменить их, как показано ниже:

введите описание изображения здесь

Как только это будет сделано, вы можете сохранить файл .ARFF и изменить запись в вашем списке атрибутов с:

@attribute a0 {false,true,maybe}

to

@attribute a0 numeric

После сохранения перезагрузите документ, и, надеюсь, все загрузится нормально.

В качестве альтернативы вы можете попробовать свое любимое приложение для работы с электронными таблицами, если преобразование ваших данных обратно в ARFF не будет проблемой.

Надеюсь это поможет!

person Matthew Spencer    schedule 25.11.2014

Нет прямого фильтра для преобразования номинальных данных в числовые данные. Если ваш номинальный атрибут имеет 2 значения (ПОЛ: МУЖСКОЙ, ЖЕНСКИЙ), вы можете легко применить фильтр к неконтролируемым фильтрам от номинального к двоичному.

Но если у вас более двух вариантов атрибута, вы не можете использовать номинальный в двоичный. Поэтому вам нужно использовать фильтр Rename Nominal vales. Здесь вы можете преобразовать номинальное значение в числовое значение. Например: если в вашем наборе данных есть атрибут с именем region и для значений есть INNER_CITY, TOWN, SUBURBAN, SUBURBAN, вы можете легко преобразовать эти номинальные значения с помощью фильтра Rename Nominal Value. .

Существует форма замены значения, вам нужно только добавить значения, как показано ниже. ВНУТРЕННИЙ_ГОРОД: 0, ГОРОД: 1, ПРИГОРОД: 2, ПРИГОРОД: 3

вы можете увидеть свои результаты.

person Chandima Samarakoon    schedule 09.06.2021
comment
Есть фильтр под названием OrdinalToNumeric. Разве это не сработает? - person Pavindu; 12.06.2021

Фильтр NominalToNumeric (пакет: weka.filters.unsupervised.attribute), который является частью ADAMS, позволяет делать именно это . Вы можете либо использовать внутреннее представление (то есть порядок меток, начинающийся с 0), либо, если в метке есть числовая часть, которая может быть преобразована в число, использовать регулярные выражения для преобразования этих подстрок.

ADAMS также предлагает Weka Investigator, более мощный инструмент, чем Weka Explorer. Просто скачайте adams-ml-app-snapshot снимок, чтобы получить доступ к этому фильтру.

person fracpete    schedule 09.06.2021