Existe-t-il une bonne bibliothèque python pour l'entraînement des arbres de décision boostés?
Existe-t-il une bonne bibliothèque python pour l'entraînement des arbres de décision boostés?
Réponses:
Réponse mise à jour
Le paysage a beaucoup changé et la réponse est claire de nos jours:
Mise à jour 1
Mon premier regard serait sur Orange , qui est une application complète pour ML, avec un backend en Python. Voir par exemple orngEnsemble .
D'autres projets prometteurs sont mlpy et scikit.learn .
Je sais que PyCV comprend plusieurs procédures de boost, mais apparemment pas pour CART. Jetez également un œil à MLboost
Vous pouvez utiliser la bibliothèque d'arbre de décision R à l'aide de Rpy (http://rpy.sourceforge.net/). Consultez également l'article "Construire des arbres de décision à l'aide de python" (http: //onlamp.com/pub/a/python/2 ...).
il y a aussi
J'ai eu un bon succès avec les apprenants arborescents de Milk: Machine Learning Toolkit for Python . Il semble être en développement actif, mais la documentation était un peu clairsemée lorsque je l'utilisais. La suite de tests (github.com/luispedro/milk/blob/master/tests/test_adaboost.py) contient cependant une "souche boostée", qui pourrait vous permettre de démarrer assez rapidement:
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
Le scikit-learn a maintenant de bons arbres de régression (et de classification) et des implémentations de forêts aléatoires . Cependant, l'arbre boosté n'est toujours pas inclus. Les gens y travaillent, mais il faut du temps pour obtenir une mise en œuvre efficace.
Avertissement: je suis un développeur scikit-learn.
JBoost est une bibliothèque géniale. Il n'est certainement pas écrit en Python, mais il est quelque peu indépendant du langage, car il peut être exécuté à partir de la ligne de commande et ainsi il peut être "piloté" à partir de Python. Je l'ai utilisé dans le passé et je l'ai beaucoup aimé, en particulier pour la visualisation.
J'ai le même problème en ce moment: je code en Python quotidiennement, j'utilise R de temps en temps et j'ai besoin d'un bon algorithme d'arbre de régression boosté. Bien qu'il existe de nombreux packages Python pour des analyses avancées, ma recherche n'a pas trouvé une bonne offre pour cet algorithme particulier. Ainsi, la route , je pense que je vais prendre dans les prochaines semaines est d'utiliser le paquet GBM dans R . Il existe un bon document montrant les problèmes pratiques liés à son utilisation qui peut être trouvé ici . Surtout, le package GBM a été essentiellement utilisé "sur étagère" pour la Coupe KDD 2009 . Donc, je vais probablement faire toutes mes modélisations pré et post en Python et utiliser RPy pour aller et venir avec R / GBM.
J'ai vécu la même situation avec vous, je trouve que Orange est difficile à régler (c'est peut-être mon problème). En fin de compte, j'ai utilisé le code de Peter Norivig pour son célèbre livre, là-dedans, il a fourni un cadre de code bien écrit pour l'arbre, tout ce dont vous avez besoin est d'y ajouter du boost. De cette façon, vous pouvez coder tout ce que vous aimez.
Arbres de décision - Ada Boosting
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
Arbres de décision sans boost
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)
Arbres de décision avec Ada 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)
Ajustement des modèles et calcul de la précision
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)