Различные результаты в Weka GUI и Weka через Python API - PullRequest
0 голосов
/ 27 ноября 2018

Мы используем python 2.7.12 с API weka 3.9.3 (и java 1.8.0191), пытаясь классифицировать его с помощью классификатора j48 ниже короткого фрагмента кода python:

loader = Loader(classname="weka.core.converters.ArffLoader")
data = loader.load_file(data_dir + "new_ALL_FEATURES.arff")
data.class_is_last()

#seperate the data to train and test:
removeRange = 
Filter(classname="weka.filters.unsupervised.instance.RemoveRange", options= 
["-R","4951-last"])
removeRange.inputformat(data)
train = removeRange.filter(data)

removeRange = 
Filter(classname="weka.filters.unsupervised.instance.RemoveRange", options= 
["-R","first-4951"])
removeRange.inputformat(data)
test = removeRange.filter(data)
cls = Classifier(classname="weka.classifiers.trees.J48", options=["-C", 
"0.25"])
cls.build_classifier(train)

Дополнительные параметрыиспользуется для классификации: обрезанное дерево, перекрестная проверка отсутствует, данные включают 23 числовых объекта (класс является номинальным), отсутствующие значения были заменены.При запуске weka GUI с использованием того же файла и того же классификатора с теми же параметрами (["-C", "0.25", "-M", "2"])) Результаты классификации отличаются от результатов, которые мы получаем изAPI: древовидная структура отличается, дерево GUI включает в себя 77 листов, в то время как дерево, построенное с помощью API, включает в себя 97 листов.

Мы искали похожую проблему и нашли следующую ссылку: Разные результаты в Weka GUI и Weka через код Java Однако это не имеет отношения к нам, так как мы не выполняем перекрестную проверку.валидация.

Что может быть причиной этой разницы?Чего нам не хватает?Пожалуйста, сообщите, спасибо заранее.

1 Ответ

0 голосов
/ 29 ноября 2018

ОБНОВЛЕНИЕ: Мы нашли проблему.Видимо, когда мы разделяли данные через API, мы пропустили одну выборку, и это вызвало разницу.

...