Чи є хороша бібліотека пітонів для навчання підсилених дерев рішень?
Чи є хороша бібліотека пітонів для навчання підсилених дерев рішень?
Відповіді:
Оновлений відповідь
Ландшафт сильно змінився, і відповідь сьогодні зрозуміла:
Оновлення 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: Toolkit Machine Learning для 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 є хороша регресія (та класифікація) дерев та реалізація випадкових лісів . Однак розширене дерево все ще не включене. Люди над цим працюють, але для отримання ефективної реалізації потрібен певний час.
Відмова: Я - розробник, що навчається наукам.
У мене є та сама проблема зараз: я кодую в Python щодня, використовую R раз у раз і мені потрібен гарний алгоритм посиленого регресійного дерева. Хоча існує багато чудових пакетів Python для розширеної аналітики, мої пошуки не знайшли хорошого пропозиції для цього конкретного алгоритму. Таким чином, маршрут я думаю , що я буду приймати в найближчі тижні, щоб використовувати пакет GBM в R . Є хороший документ з практичними проблемами його використання, який можна знайти тут . Важливо те, що пакет GBM в основному використовувався «з полиці» для кубка KDD 2009 року . Отже, я, мабуть, буду робити все своє перед і після моделювання в Python і використовувати RPy, щоб повертатися вперед і назад з R / GBM.
Я пережив подібну ситуацію з вами, я вважаю, що помаранчевий важко налаштувати (можливо, це моя проблема). Зрештою, я використав код Пітера Норівіга для своєї знаменитої книги, там він надав добре написану рамку коду для дерева. Все, що вам потрібно, це додати в нього підвищення. Таким чином, ви можете кодувати все, що завгодно.
Дерева рішень - 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)
Дерева рішень з адаптуванням Ada
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)