Python'da karar ağaçları artırıldı mı? [kapalı]


13

Güçlendirilmiş karar ağaçlarının eğitimi için iyi bir python kütüphanesi var mı?


3
Rpy, tabii ki ;-)

Mbq ile hemfikirim. Bunu Python'da yapmanızın çok iyi bir nedeni var mı? Aksi takdirde R işçisini de arka uç olarak kullanırdım.
Joris Meys

Bunun tek nedeni, R'yi yılda sadece birkaç kez kullandığım ve her gün kullandığım python ...
Andre Holzner

2
Rpy gerçekten iğrenç bir bağımlılık. R'nin büyük bir dizi özelliği vardır ve bu nedenle Rpy'yi kullanarak bunları kazmak güzeldir, ancak bu işi paylaşmanız gerekiyorsa, aynı laboratuvarın farklı bilgisayarlarında olsa bile başınız belada olabilir, laboratuvarınız heterojen bir hesaplama ortamındaysa. Bunun nedeni, Rpy'nin Python, numpy ve R'nin doğru küçük sürümlerine sahip olmasına bağlı olmasıdır. Örneğin, büyük Linux dağıtımlarında bozulmaya devam ediyor.
Gael Varoquaux

3
Buradaki cevaplar modası geçmiş gibi görünüyor - scikit.learn'un başlangıcından itibaren gelmiş gibi görünüyorlar. Bilgili biri güncellenmiş bir cevap koyarsa okuyucuların ve sitenin fayda sağlayacağını düşünüyorum.
Pere

Yanıtlar:


5

Güncellenmiş Yanıt

Manzara çok değişti ve cevap bugünlerde açık:

  • scikit-öğrenme olduğunu Python kütüphane ve artırdığını karar ağaçları için birkaç büyük algoritmaları vardır
  • python'daki "en iyi" güçlendirilmiş karar ağacı XGBoost uygulamasıdır.

Güncelleme 1


12

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



6

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

4
Süt geliştiriyorum. İkinizden biri herhangi bir sorunla karşılaşırsa, lütfen bana e-posta ile bildirin (cmu dot edu'da lpc). Hata raporları genellikle 24 saatin altında giderilir.
luispedro

Bu arada, adaboost hakkında biraz daha dokümantasyon ekledim: Packages.python.org/milk/adaboost.html, böylece yukarıdaki yorum öncekinden daha az geçerli olabilir.
luispedro

4

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.


1

JBoost harika bir kütüphanedir. Kesinlikle Python'da yazılmamıştır, ancak biraz agnostiktir, çünkü komut satırından yürütülebilir ve böylece Python'dan "sürülebilir". Geçmişte kullandım ve çok beğendim, özellikle görselleştirme şeyler.


1

Ş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.


0

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.


0

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.