Классификация новых наблюдений

Теперь нам необходима функция, которая классифицирует новое наблюдение в соответствии с деревом решений. Добавьте ее в файл treepredict.py:

def classify(observation,tree): if tree.results!=None: return tree.results else:

v=observation[tree.col] branch=None

if isinstance(v,int) or isinstance(v,float): if v>=tree.value: branch=tree.tb else: branch=tree.fb

else:

if v==tree.value: branch=tree.tb else: branch=tree.fb return classify(observation,branch)

Эта функция обходит дерево примерно так же, как printtree. После каждого вызова проверяется, достигнут ли конец дерева, то есть имеется ли в узле список результатов results. Если нет, то для данного наблюдения проверяется условие в текущем узле. Если оно выполнено, то classify рекурсивно вызывается для ветви true, иначе – для ветви false. Давайте воспользуемся функцией classify для получения прогноза относительного нового наблюдения: >>> reload(treepredict)

<module ‘treepredict’ from ‘treepredict.pyc’>

>>> treepredict.classify([‘(direct)’,’USA’,’yes’,5],tree)

{‘Basic’: 4}

Итак, мы имеем функции для создания дерева решений по набору данных, для отображения и интерпретации дерева и для классификации новых наблюдений. Эти функции можно применить к любому набору данных, состоящему из нескольких строк, каждая из которых содержит наблюдения и результат.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100