#java #machine-learning #classification #weka #decision-tree
#java #машинное обучение #классификация #weka #дерево решений
Вопрос:
Я генерирую дерево решений ML, используя данные поезда. В соответствии с моим вариантом использования мне нужно заглянуть в дерево решений, чтобы получить более подробную информацию о распределении данных, таких как значения на каждом узле и т.д. Я использовал weka в java для создания дерева, и я могу видеть древовидную структуру, используя простой оператор печати, однако weka не предоставляет никакого API для дальнейшего изучения дерева, дерево доступно только в виде строки. Я не хочу анализировать строку, есть ли какая-либо другая доступная библиотека, которая может помочь в переводе деревьев в набор правил путем обычного обхода? Любая другая библиотека на основе ML, которая может генерировать дерево на основе доступных данных и позволяет заглядывать в дерево для анализа, такого как извлечение правил?
BufferedReader reader = new BufferedReader(
new FileReader("NewData.arff"));
Instances data = new Instances(reader);
reader.close();
data.setClassIndex(data.numAttributes() - 1);
String[] options = new String[1];
options[0] = "-U"; // unpruned tree
J48 tree = new J48(); // new instance of tree
tree.setOptions(options); // set the options
tree.setMinNumObj(100);
tree.buildClassifier(data); // build classifier
System.out.println(tree); // Print tree as string
Теперь я хочу заглянуть в дерево, чтобы получить некоторые результаты. Пожалуйста, помогите мне с любой доступной библиотекой для этого.
Ответ №1:
Weka имеет открытый исходный код.
Используйте исходный код. Настройте по мере необходимости.
Если вам абсолютно необходим доступ к некоторым внутренним структурам данных (помните, что они могут меняться в разных версиях), законно сделать их общедоступными. Или вы могли бы даже создать API для обхода дерева (если это действительно еще не существует; потому что существуют функции для визуализации дерева), а затем внести свой вклад в Weka, чтобы другие тоже могли его использовать.