Мы используем 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 Однако это не имеет отношения к нам, так как мы не выполняем перекрестную проверку.валидация.
Что может быть причиной этой разницы?Чего нам не хватает?Пожалуйста, сообщите, спасибо заранее.