Güçlendirilmiş karar ağaçlarının eğitimi için iyi bir python kütüphanesi var mı?
Güçlendirilmiş karar ağaçlarının eğitimi için iyi bir python kütüphanesi var mı?
Yanıtlar:
Güncellenmiş Yanıt
Manzara çok değişti ve cevap bugünlerde açık:
Güncelleme 1
Benim ilk bakış olacağını Orange Python bir arka uca sahip, ML için tam özellikli bir uygulamadır. Bkz. Örneğin orngEnsemble .
Diğer umut verici projeler mlpy ve scikit.learn .
PyCV'nin çeşitli artırma prosedürleri içerdiğini biliyorum , ancak görünüşe göre CART için değil. MLboost'a da bir göz atın
R karar ağacı kütüphanesini Rpy'yi kullanarak kullanabilirsiniz (http://rpy.sourceforge.net/). Ayrıca "python kullanarak karar ağaçları oluşturma" makalesine bakın (http: //onlamp.com/pub/a/python/2 ...).
Ayrıca birde şu var
Python için Milk: Machine Learning Toolkit'teki ağaç tabanlı öğrencilerle başarılı oldum . Aktif geliştirme aşamasında gibi görünüyor, ama belgeleri kullanırken biraz seyrekti. Test paketi (github.com/luispedro/milk/blob/master/tests/test_adaboost.py), oldukça hızlı bir şekilde gitmenizi sağlayacak bir "güçlendirilmiş güdük" içerir:
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 artık iyi regresyon (ve sınıflandırma) ağaçları ve rastgele orman uygulamalarına sahiptir . Ancak, güçlendirilmiş ağaç hala dahil değildir. İnsanlar üzerinde çalışıyor, ancak etkili bir uygulama elde etmek biraz zaman alıyor.
Feragatname: Ben scikit-öğrenen bir geliştiriciyim.
Şu anda aynı sorunu var: Ben günlük Python kod, arada bir R kullanın ve iyi bir artırılmış regresyon ağacı algoritması gerekir. Gelişmiş analitik için çok sayıda harika Python paketi olsa da, aramam bu algoritma için iyi bir teklif bulamadı. Yani, önümüzdeki haftalarda alacağımı düşündüğüm rota R'de GBM paketini kullanmak . Burada bulunabilir pratik kullanımları gösteren iyi bir makale var . Daha da önemlisi, GBM paketi temel olarak 2009 KDD Cup'ta "raftan" kullanıldı . Bu yüzden, muhtemelen tüm ön ve sonrası modellememi Python'da yapacağım ve R / GBM ile ileri geri gitmek için RPy'yi kullanacağım.
Seninle benzer bir durum yaşadım, Portakal'ın ayarlanmasının zor olduğunu düşünüyorum (belki de benim sorunumdur). Sonunda, ünlü kitabı için Peter Norivig'in kodunu kullandım, orada ağaç için iyi yazılmış bir kod çerçevesi sağladı, ihtiyacınız olan tek şey ona takviye eklemek. Bu şekilde, istediğiniz her şeyi kodlayabilirsiniz.
Karar Ağaçları - Ada Boosting
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
Arttırıcı Olmayan Karar Ağaçları
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 Boosting ile Karar Ağaçları
clf_entropy_ada = AdaBoostClassifier(base_estimator= clf_entropy_no_ada,n_estimators=400,learning_rate=1)
clf_entropy_ada.fit(X_train, y_train)
Modellerin Takılması ve Doğruluğun Hesaplanması
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)