Підсилили дерева рішень у пітоні? [зачинено]


13

Чи є хороша бібліотека пітонів для навчання підсилених дерев рішень?


3
Rpy, звичайно ;-)

Я згоден з mbq. Чи є дуже вагома причина, чому ви повинні це робити в Python? Інакше я б використовував робочий коник R як бек-енд.
Joris Meys

Єдиною причиною є те, що я використовував R лише декілька разів на рік або близько того тому, а пітон я використовую щодня ...
Андре Хольцнер

2
Rpy - це справді неприємна залежність. R має величезний набір функцій, і тому приємно мати можливість копатися в них за допомогою Rpy, але якщо вам доведеться поділитися цією роботою, ви можете виникнути проблеми, навіть якщо вона знаходиться на різних комп’ютерах однієї лабораторії, якщо ваша лабораторія знаходиться в неоднорідному обчислювальному середовищі. Це пов’язано з тим, що Rpy залежить від того, щоб мати правильні другорядні версії Python, numpy та R. Наприклад, він постійно ламається в основних дистрибутивах Linux.
Gael Varoquaux

3
Відповіді тут здаються застарілими - вони, мабуть, походять з часу, коли scikit.learn був на початку. Я думаю, що читачі та сайт отримали б користь, якщо хтось знаючий поставить оновлену відповідь.
Пер

Відповіді:


5

Оновлений відповідь

Ландшафт сильно змінився, і відповідь сьогодні зрозуміла:

  • scikit-learn - це бібліотека в python і має кілька чудових алгоритмів для посилених дерев рішень
  • "найкраще" підсилене дерево рішень у python - це реалізація XGBoost .

Оновлення 1

  • Тим часом, LightGBM , хоч і все ще досить «новий», здається, настільки ж хороший або навіть кращий, ніж XGBoost

12

Перший мій погляд був би на Orange , який є повнофункціональним додатком для ML, із початком роботи в Python. Дивіться, наприклад, orngEnsemble .

Інші перспективні проекти - mlpy та scikit.learn .

Я знаю, що PyCV включає декілька прискорених процедур, але, очевидно, не для CART. Погляньте також на MLboost



6

Я мав добрий успіх з учнями, що базуються на деревах, у програмі 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

4
Я виробляю молоко. Якщо хтось із вас зіткнувся з будь-якими проблемами, повідомте мене про це електронною поштою (lpc at cmu dot edu). Звіти про помилки зазвичай виправляються за 24 години.
luispedro

У той же час, я додав трохи більше документації на AdaBoost: packages.python.org/milk/adaboost.html тому вище коментар може бути менш достовірні , ніж це було раніше.
luispedro

4

Зараз у scikit-learn є хороша регресія (та класифікація) дерев та реалізація випадкових лісів . Однак розширене дерево все ще не включене. Люди над цим працюють, але для отримання ефективної реалізації потрібен певний час.

Відмова: Я - розробник, що навчається наукам.


1

JBoost - дивовижна бібліотека. Це точно не написано на Python, однак це дещо агностично, тому що він може бути виконаний з командного рядка, і таким чином він може бути «загнаний» з Python. Я використовував його в минулому і дуже сподобався, особливо речі з візуалізації.


1

У мене є та сама проблема зараз: я кодую в Python щодня, використовую R раз у раз і мені потрібен гарний алгоритм посиленого регресійного дерева. Хоча існує багато чудових пакетів Python для розширеної аналітики, мої пошуки не знайшли хорошого пропозиції для цього конкретного алгоритму. Таким чином, маршрут я думаю , що я буду приймати в найближчі тижні, щоб використовувати пакет GBM в R . Є хороший документ з практичними проблемами його використання, який можна знайти тут . Важливо те, що пакет GBM в основному використовувався «з полиці» для кубка KDD 2009 року . Отже, я, мабуть, буду робити все своє перед і після моделювання в Python і використовувати RPy, щоб повертатися вперед і назад з R / GBM.


0

Я пережив подібну ситуацію з вами, я вважаю, що помаранчевий важко налаштувати (можливо, це моя проблема). Зрештою, я використав код Пітера Норівіга для своєї знаменитої книги, там він надав добре написану рамку коду для дерева. Все, що вам потрібно, це додати в нього підвищення. Таким чином, ви можете кодувати все, що завгодно.


0

Дерева рішень - 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.