Есть ли хорошая библиотека Python для обучения расширенных деревьев решений?
Есть ли хорошая библиотека Python для обучения расширенных деревьев решений?
Ответы:
Обновленный ответ
Ландшафт сильно изменился, и ответ ясен:
Обновление 1
Мой первый взгляд был бы на Orange , который является полнофункциональным приложением для ML, с бэкэндом в Python. Смотрите, например, orngEnsemble .
Другими перспективными проектами являются mlpy и scikit.learn .
Я знаю, что PyCV включает несколько процедур повышения, но, очевидно, не для CART. Взгляните также на MLboost
Вы можете использовать библиотеку дерева решений R, используя Rpy (http://rpy.sourceforge.net/). Также проверьте статью «Построение деревьев решений с использованием python» (http: //onlamp.com/pub/a/python/2 ...).
а также есть
У меня были хорошие успехи с учениками на основе дерева в Milk: Machine Learning Toolkit для Python . Кажется, он находится в стадии активной разработки, но документация была немного скудной, когда я ее использовал. Набор тестов (github.com/luispedro/milk/blob/master/tests/test_adaboost.py), однако, содержит «усиленный пень», который может довольно быстро привести вас в движение:
import numpy as np
import milk.supervised.tree
import milk.supervised.adaboost
def test_learner():
from milksets import wine
learner = milk.supervised.adaboost.boost_learner(milk.supervised.tree.stump_learner())
features, labels = wine.load()
features = features[labels < 2]
labels = labels[labels < 2] == 0
labels = labels.astype(int)
model = learner.train(features, labels)
train_out = np.array(map(model.apply, features))
assert (train_out == labels).mean() > .9
У scikit-learn теперь есть хорошие деревья регрессии (и классификации) и реализации случайных лесов . Однако увеличенное дерево все еще не включено. Люди работают над этим, но для эффективной реализации требуется время.
Отказ от ответственности: я разработчик scikit-Learn.
JBoost - это потрясающая библиотека. Это определенно не написано на Python, однако, это несколько не зависит от языка, потому что он может быть выполнен из командной строки и так далее, так что он может быть "извлечен" из Python. Я использовал это в прошлом, и мне это очень понравилось, особенно материал визуализации.
У меня сейчас та же проблема: я ежедневно пишу код на Python, время от времени использую R и мне нужен хороший алгоритм ускоренного дерева регрессии. Хотя существует множество отличных пакетов Python для расширенной аналитики, мой поиск не нашел хорошего предложения для этого конкретного алгоритма. Таким образом, маршрут я думаю , что я буду принимать в ближайшие недели, чтобы использовать пакет GBM в R . Есть хорошая статья, показывающая практические проблемы с ее использованием, которую можно найти здесь . Важно отметить, что пакет GBM в основном использовался "с полки", чтобы выиграть в Кубке KDD 2009 года . Итак, я, вероятно, сделаю все свои модели до и после моделирования на Python и буду использовать RPy, чтобы переходить назад и вперед с R / GBM.
Я сталкивался с подобной ситуацией с вами, я нахожу, что Orange сложно настроить (возможно, это моя проблема). В конце концов, я использовал код Питера Норивига для его знаменитой книги, там он предоставил хорошо написанную структуру кода для дерева, все, что вам нужно, это добавить в него бустинг. Таким образом, вы можете кодировать все что угодно.
Деревья решений - Ada Boosting
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
Деревья решений без ускорения
clf_entropy_no_ada = DecisionTreeClassifier(criterion = "entropy", random_state = 100,
max_depth=5, min_samples_leaf=5)
clf_entropy_no_ada.fit(X_train, y_train)
Деревья решений с Ада Boosting
clf_entropy_ada = AdaBoostClassifier(base_estimator= clf_entropy_no_ada,n_estimators=400,learning_rate=1)
clf_entropy_ada.fit(X_train, y_train)
Подгонка моделей и расчет точности
y_predict_no_ada = clf_entropy_no_ada.predict(X_test)
print ("Accuracy is ", accuracy_score(y_test,y_predict_no_ada)*100)
y_predict_ada = clf_entropy_ada.predict(X_test)
print ("Accuracy is ", accuracy_score(y_test,y_predict_ada)*100)