Как подготовить данные для правил ассоциации в python-weka-wrapper? - PullRequest
2 голосов
/ 01 июля 2019

Я пытаюсь выучить правила для заданных данных, используя weka в python. Weka получает ошибки «Не удается обработать строковые и числовые атрибуты»

Я использую https://github.com/fracpete/python-weka-wrapper3

Сначала я сделал:

loader = Loader(classname="weka.core.converters.CSVLoader")
    data = loader.load_file(path)
    data.class_is_last()

Но получил:

javabridge.jutil.JavaException: weka.associations.Apriori: Cannot handle numeric attributes!

При попытке выучить правила.

Я понимаю ошибку, weka хочет именные атрибуты. ХОРОШО! Я искал и нашел способы сделать это: http://weka.sourceforge.net/doc.dev/weka/filters/unsupervised/attribute/NominalToString.html

Итак, я попробовал:


loader = Loader(classname="weka.core.converters.CSVLoader")
    data = loader.load_file(path)
    nominal = Filter(classname="weka.filters.unsupervised.attribute.NumericToNominal", options=["-R", "first-last"])
    nominal.inputformat(data)
    nominal_data = nominal.filter(data)
    nominal_data.class_is_last()

    return nominal_data

Но получил:

javabridge.jutil.JavaException: weka.associations.Apriori: Cannot handle string attributes!

Что мне не хватает? спасибо

1 Ответ

1 голос
/ 01 июля 2019

В Weka существуют типы данных String и nominal.Тип данных String является текстовым типом с неопределенным числом значений (например, идентификатор отслеживания: R99432239US), а тип Nominal соответствует значениям из закрытого набора (например, состояние {ходьба, бег, сидение}).

При разборе файла csv загрузчик назначает тип данных атрибута в соответствии с количеством значений, которые появляются в данных.

Если вы хотите использовать числовые значения как номинальные, яПолагайте, что вы захотите взглянуть на фильтр Discretize вместо использования фильтра NumericToNominal.

...