Как интерпретировать результат классификации weka J48

Мне нужна помощь, чтобы интерпретировать результат в Weka с помощью J48

Я не знаю, как объяснить результат, я использую набор данных о сердечных заболеваниях из http://archive.ics.uci.edu/ml/datasets/Heart+Disease

И дерево J48

Пожалуйста, помогите мне, с некоторыми точками, важными для этого анализа, мой результат:

=== Запустить информацию ===

  • Схема: weka.classifiers.trees.J48 -C 0,25 -M 2
  • Отношение: AnaliseCardiaca
  • Экземпляры: 303
  • Атрибуты: 14
    • возраст
    • секс
    • ср
    • trestbps
    • Чхоль
    • FBS
    • restecg
    • thalach
    • exang
    • oldpeak
    • скат
    • Калифорния
    • Тал
    • num Тестовый режим: 10-кратная перекрестная проверка

=== Модель классификатора (полный набор тренировок) ===

J48 обрезанное дерево

cp <= 3
|   sex <= 0: 0 (57.0/2.0)
|   sex > 0
|   |   slope <= 1
|   |   |   fbs <= 0
|   |   |   |   trestbps <= 152
|   |   |   |   |   thalach <= 162
|   |   |   |   |   |   ca <= 1
|   |   |   |   |   |   |   age <= 56: 0 (12.0/1.0)
|   |   |   |   |   |   |   age > 56: 1 (3.0/1.0)
|   |   |   |   |   |   ca > 1: 1 (2.0)
|   |   |   |   |   thalach > 162: 0 (27.0)
|   |   |   |   trestbps > 152: 1 (4.0/1.0)
|   |   |   fbs > 0: 0 (9.0)
|   |   slope > 1
|   |   |   slope <= 2
|   |   |   |   ca <= 0
|   |   |   |   |   fbs <= 0
|   |   |   |   |   |   chol <= 261
|   |   |   |   |   |   |   oldpeak <= 2.5: 0 (11.61/1.0)
|   |   |   |   |   |   |   oldpeak > 2.5: 1 (3.0)
|   |   |   |   |   |   chol > 261: 1 (4.0)
|   |   |   |   |   fbs > 0: 0 (4.0)
|   |   |   |   ca > 0
|   |   |   |   |   thal <= 6: 1 (6.0/1.0)
|   |   |   |   |   thal > 6
|   |   |   |   |   |   thalach <= 145: 0 (3.39)
|   |   |   |   |   |   thalach > 145: 1 (5.0/1.0)
|   |   |   slope > 2: 0 (8.0/1.0)
cp > 3
|   thal <= 3
|   |   ca <= 2
|   |   |   exang <= 0
|   |   |   |   sex <= 0
|   |   |   |   |   chol <= 304: 0 (14.0)
|   |   |   |   |   chol > 304: 1 (3.0/1.0)
|   |   |   |   sex > 0
|   |   |   |   |   ca <= 0: 0 (10.0/1.0)
|   |   |   |   |   ca > 0: 1 (3.0)
|   |   |   exang > 0
|   |   |   |   restecg <= 1
|   |   |   |   |   slope <= 1: 0 (2.0)
|   |   |   |   |   slope > 1: 1 (5.37)
|   |   |   |   restecg > 1
|   |   |   |   |   ca <= 0: 0 (4.0)
|   |   |   |   |   ca > 0
|   |   |   |   |   |   ca <= 1
|   |   |   |   |   |   |   thalach <= 113: 0 (2.0)
|   |   |   |   |   |   |   thalach > 113: 1 (4.0)
|   |   |   |   |   |   ca > 1: 0 (2.0)
|   |   ca > 2: 1 (4.0)
|   thal > 3
|   |   fbs <= 0
|   |   |   ca <= 0
|   |   |   |   chol <= 278: 0 (23.0/8.0)
|   |   |   |   chol > 278: 1 (6.0)
|   |   |   ca > 0: 1 (46.0/12.0)
|   |   fbs > 0
|   |   |   ca <= 1: 1 (3.88)
|   |   |   ca > 1: 0 (11.75/4.75)

Количество листьев: 31

Размер дерева: 61

Результат img

2 ответа

Если вы используете Weka Explorer, вы можете щелкнуть правой кнопкой мыши по строке результатов в списке результатов (расположен слева от окна под кнопкой запуска). Затем выберите визуализировать дерево. Это покажет изображение дерева.

Если вы все еще хотите понять результаты, как они показаны в вашем вопросе:

Результаты отображаются в виде дерева. Корень дерева начинается слева. Вы можете видеть, что первая используемая функция называется cp. Если cp меньше или равно 3, то следующая особенность в дереве - это пол и так далее. Вы можете видеть, что когда вы разделяете на пол и пол <= 0, вы достигаете предсказания. Прогноз равен 0, а (57/2) означает, что 57 наблюдений в поезде, установленном на этом пути, имели метку 0, а 2 - метку 1.

Вот как выглядит начало дерева:

                         --------start---------         
                         |                    |
                         |                    |
                         |cp > 3              | cp <= 3
                _________|______          ____|__________
                |              |          |              |
                |thal>3        |thal<=3   |sex>0         |sex<=0
                |              |          |              |
               ...            ...        ...         prediction 0 (57,2)

Объяснение AndreyF хорошее. Я хочу добавить некоторую информацию.

Почему у дерева есть числа с плавающей точкой в ​​его листьях? Можно ли разделить (индивидуальный) экземпляр и получить значение с плавающей запятой? (на самом деле человека нельзя расколоть)

Когда у экземпляра все атрибуты установлены идеально, проблем не возникает. Но когда у экземпляра отсутствуют атрибуты, тогда классификатор (J48) не знает путь дерева для этого атрибута.

Например, если экземпляр имеет свой атрибут "oldpeak", такой как отсутствующий атрибут, то, когда он достигает узла "chol <= 261" (от предыдущего узла до узла "oldpeak"), классификатор разделит экземпляр в соответствии с вероятностью и процент экземпляра перейдет к "oldpeak <= 2.5", а другой процент перейдет к "oldpeak > 2.5".

Как классификатор рассчитывает эту вероятность? Он рассчитывает через экземпляры, которые не имеют отсутствующего атрибута для фактического узла. Для этого примера будет атрибут "oldpeak".

Если у нас есть 25% экземпляров без отсутствующего атрибута "oldpeak", которые были классифицированы в узле "oldpeak <= 2.5", и у нас есть 75% экземпляров без отсутствующего атрибута "oldpeak", которые были классифицированы в узле "oldpeak> 2.5" затем, когда классификатор хочет классифицировать экземпляр с отсутствующим атрибутом "oldpeak", тогда 25% этого экземпляра пройдут через "oldpeak <= 2.5", а остальные (75%) пройдут через "oldpeak > 2.5".

Вы можете попытаться удалить экземпляры с отсутствующими атрибутами, и вы увидите, что в дереве будут только целые числа, а не числа с плавающей запятой.

Спасибо.

Другие вопросы по тегам