Обход дерева решений для получения набора правил

#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, чтобы другие тоже могли его использовать.