реализация дерева классификации в Mathematica - PullRequest
2 голосов
/ 03 июля 2011

Я хочу реализовать простое дерево классификации (двоичная классификация), используя Mathematica.

Как я могу реализовать двоичное дерево в Mathematica ?Есть ли для этого символ?

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

Среди новых объектов в MMA 8: TreeGraph , CompleteKaryTree и KaryTree .Последние два объекта дают двоичные деревья по умолчанию.Я не знаю, насколько они эффективны для интенсивных вычислений, но они действительно хорошо подходят для отображения классификаций.И есть много предикатов и опций для манипулирования ими и их отображения.

Вот пример дерева классификации из [Брейман Л. Деревья классификации и регрессии: Chapman & Hall / CRC, 1984.].Это касается 3 вопросов, чтобы определить, может ли сердечный пациент умереть в течение 30 дней, если его не лечить.

KaryTree[9, 2, 
   VertexLabels -> {1 -> "Blood pressure > 91 ?", 2 -> "Age > 62.5?", 
                    4 -> "Sinus tachycardia ?", 8 -> "< 30 days"}, 
   EdgeLabels -> {1 \[UndirectedEdge] 2 -> "yes", 
                  1 \[UndirectedEdge] 3 -> "no", 2 \[UndirectedEdge] 4 -> "yes", 
                  2 \[UndirectedEdge] 5 -> "no", 4 \[UndirectedEdge] 8 -> "yes", 
                  4 \[UndirectedEdge] 9 -> "no"}, ImagePadding -> 20]

Classification graph

Я бы хотел избавиться от двух неиспользованныхузлы справа, но не нашли элегантного способа сделать это.Так что я думаю, что выложу простой вопрос об этом на SO.

2 голосов
/ 03 июля 2011

Я бы сказал, что это зависит от того, что вы хотите сделать со структурой данных.

Вы можете использовать тот факт, что выражения Mathematica сами по себе являются деревьями.

Если релевантны только конечные узлы, используйте вложенные списки, например, {{1, {2, 3}}, 4}. Если другой узел тоже должен нести некоторые данные, вы можете использовать что-то вроде этого:

tree[1][tree[2][a, b], tree[3][c, tree[4][d, e]]]

Смотри структуру так:

{{1, {2, 3}}, 4} // TreeForm
tree[1][tree[2][a, b], tree[3][c, tree[4][d, e]]] // TreeForm

Следующий вопрос - как реализовать алгоритм X для такой структуры данных.

1 голос
/ 03 июля 2011

Лично я не совсем знаю, но на сайте Wolfram, похоже, есть статья на эту тему, найденная здесь . Возможно, он не ответит на ваш вопрос, но, надеюсь, даст вам некоторое представление!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...