Форум сайта python.su
Добрый день.
Пишу программа которая будет строить деревья решений. По книжке Тоби Сегарана “Программируем коллективный разум”. Там весь код есть. Я его собрал, программа работает. Вот только одна процедура, а именно отсечения ветвей не работает. Так как я про Python вообще ничего не знаю(Мне нужна программа ивсе), я не могу отладить ошибку.
Прошу помощи, ошибка в процедуре “prune”.
Для того чтобы долго не разбиратся в коде, вот команды по очереди:
import treepredict - это понятно
tree=treepredict.buildtree(treepredict.my_data) - это, собственно построение дерева.
treepredict.prune(tree,0.1) - а это и есть отсечение и тут у меня ошибки.
Надеюсь на вашу помощь. Код прилагается.
А вот код процедуры.
def prune(tree,mingain): if tree.tb.results==None: prune(tree.tb,mingain) if tree.fb.results==None: prune(tree.fb,mingain) if tree.tb.results!=None and tree.fb.results!=None: tb=[] fb=[] for v,c in tree.tb.results.items( ): tb+=[[v]]*c for v,c in tree.fb.results.items( ): fb+=[[v]]*c delta=entropy(tb+fb)-(entropy(tb)+entropy(fb)/2) if delta<mingain: tree.tb,tree.fb=None,None tree.results=uniquecounts(tb+fb)
Отредактировано pas (Май 26, 2012 15:38:17)
Прикреплённый файлы:
treepredict.py (37,5 KБ)
Офлайн
вот в этом модуле метод prune ни на что не ругается (по крайнем мере, если его запускать как “__main__”), попробуйте его, что ли. удач)
Офлайн
Спасибо большое, что погуглили за меня Вроде все работает, извините за беспокойство. Тему можно закрывать.
Офлайн