Apakah ada perpustakaan python yang bagus untuk pelatihan pohon keputusan yang didorong?
Apakah ada perpustakaan python yang bagus untuk pelatihan pohon keputusan yang didorong?
Jawaban:
Jawaban yang Diperbarui
Lanskap telah banyak berubah dan jawabannya jelas saat ini:
Perbarui 1
Penampilan pertama saya adalah di Orange , yang merupakan aplikasi berfitur lengkap untuk ML, dengan backend dalam Python. Lihat misalnya orngEnsemble .
Proyek menjanjikan lainnya adalah mlpy dan scikit.learn .
Saya tahu bahwa PyCV mencakup beberapa prosedur peningkatan, tetapi tampaknya tidak untuk CART. Lihatlah juga MLboost
Anda dapat menggunakan perpustakaan pohon keputusan R menggunakan Rpy (http://rpy.sourceforge.net/). Periksa juga artikel "membangun pohon keputusan menggunakan python" (http: //onlamp.com/pub/a/python/2 ...).
ada juga
Saya mendapatkan kesuksesan yang baik dengan pelajar berbasis pohon di Milk: Machine Learning Toolkit for Python . Tampaknya sedang dalam pengembangan aktif, tetapi dokumentasinya agak jarang ketika saya menggunakannya. Test suite (github.com/luispedro/milk/blob/master/tests/test_adaboost.py) berisi "tunggul yang dikuatkan", yang bisa membuat Anda bergerak cukup cepat:
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 sekarang memiliki penerapan regresi (dan klasifikasi) pohon yang baik dan implementasi hutan acak . Namun, pohon yang dikuatkan masih belum termasuk. Orang-orang sedang mengusahakannya, tetapi perlu waktu untuk mendapatkan implementasi yang efisien.
Penafian: Saya adalah pengembang scikit-learn.
JBoost adalah perpustakaan yang luar biasa. Ini jelas tidak ditulis dalam Python, tetapi Agnostik agak bahasa, karena dapat dieksekusi dari baris perintah dan semacamnya sehingga dapat "didorong" dari Python. Saya telah menggunakannya di masa lalu dan sangat menyukainya, terutama hal-hal visualisasi.
Saya memiliki masalah yang sama sekarang: Saya kode dalam Python setiap hari, gunakan R sesekali, dan perlu algoritma pohon regresi yang baik. Meskipun ada banyak paket Python yang bagus untuk analitik tingkat lanjut, pencarian saya belum menemukan penawaran yang bagus untuk algoritma khusus ini. Jadi, rute saya pikir saya akan mengambil dalam beberapa minggu mendatang adalah dengan menggunakan paket GBM di R . Ada kertas bagus yang menunjukkan masalah praktis dengan menggunakannya yang dapat ditemukan di sini . Yang penting, paket GBM pada dasarnya digunakan "off the shelf" untuk digunakan pada KDD Cup 2009 . Jadi, saya mungkin akan melakukan semua pemodelan pra dan posting saya di Python dan menggunakan RPy untuk bolak-balik dengan R / GBM.
Saya telah mengalami situasi yang sama dengan Anda, saya menemukan Orange sulit untuk dicari (mungkin itu masalah saya). Pada akhirnya, saya menggunakan kode Peter Norivig untuk bukunya yang terkenal, di sana ia memberikan kerangka kode yang ditulis dengan baik untuk pohon, yang Anda butuhkan hanyalah menambahkan peningkatan di dalamnya. Dengan cara ini, Anda dapat membuat kode apa pun yang Anda suka.
Pohon Keputusan - Ada Meningkatkan
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
Pohon Keputusan tanpa Peningkatan
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)
Pohon Keputusan dengan 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)
Pas Model dan menghitung Akurasi
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)