Вы должны определить, что вы подразумеваете под «классифицировать данные», поскольку это неоднозначно в контексте реально значимых меток классов. Если гипотетический классификатор предсказал Label = 26.7200000000001 для вашего примера строки, следует ли это считать правильным? Если да, то в каком эпсилоне это уже не так? Если нет, то вы, вероятно, ошибаетесь из-за того, что компьютеры работают с действительными числами.
J48 не решает (и не может реально) решить эти проблемы. Требуется конечное количество значений на выбор. Обычный способ сделать это, как сказал ваш совет, дискретизировать переменную. Таким образом, вместо бесконечного количества меток у вас есть одна метка для «0 <= x <10», другая для «10 <= x <20» и т. Д. Как именно это сделать, зависит от проблемы - насколько точность нужен ли вам, какой диапазон значений вы можете наблюдать и т. д. Чем точнее дискретизация, тем более точным может быть получаемый в результате классификатор, но за счет времени и количества необходимых данных обучения. </p>
Если вы не хотите таким образом дискретизировать выходную переменную, другой подход заключается в том, чтобы рассматривать ее как проблему регрессии, а не как проблему классификации. Там цель состоит в том, чтобы вывести действительное число таким образом, чтобы некоторая мера ошибки (например, среднеквадратическая ошибка по всему обучающему набору) была минимизирована. J48 не является хорошим выбором для этого подхода. Я не очень много делаю с Weka, но кажется, что пространство имен weka.classifiers.functions
содержит базовую поддержку Weka для регрессионных моделей. С другой стороны, если вы хотите придерживаться чего-то, основанного на деревьях решений, вы можете взглянуть на weka.classifiers.trees.M5P
.
Обратите внимание, что это не моя область знаний, но, поскольку вы не получили никаких других ответов в течение 18 часов или около того, я подумал, что это может помочь. Просто имейте в виду, что если вы видите что-то, что противоречит мне, автоматически не предполагайте, что я правильно понял детали.