Có một thư viện python tốt để đào tạo cây quyết định tăng cường?
Có một thư viện python tốt để đào tạo cây quyết định tăng cường?
Câu trả lời:
Cập nhật câu trả lời
Phong cảnh đã thay đổi rất nhiều và ngày nay câu trả lời đã rõ ràng:
Cập nhật 1
Cái nhìn đầu tiên của tôi sẽ là Orange , một ứng dụng đầy đủ tính năng cho ML, với phần phụ trợ trong Python. Xem ví dụ orngEnsemble .
Các dự án đầy hứa hẹn khác là mlpy và scikit.learn .
Tôi biết rằng PyCV bao gồm một số thủ tục thúc đẩy, nhưng dường như không phải cho GIỎ HÀNG. Hãy xem MLboost
Bạn có thể sử dụng thư viện cây quyết định R bằng Rpy (http://rpy.sourceforge.net/). Đồng thời kiểm tra bài viết "xây dựng cây quyết định bằng python" (http: //onlamp.com/pub/a/python/2 ...).
cũng có
Tôi đã thành công tốt đẹp với những người học dựa trên cây trong Sữa: Bộ công cụ học máy cho Python . Nó dường như đang được phát triển tích cực, nhưng tài liệu hơi thưa thớt khi tôi sử dụng nó. Bộ thử nghiệm (github.com/luispedro/milk/blob/master/tests/test_adaboost.py) chứa một "gốc cây được tăng cường", điều này có thể giúp bạn đi khá nhanh:
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 hiện có cây hồi quy (và phân loại) tốt và triển khai rừng ngẫu nhiên . Tuy nhiên, cây tăng cường vẫn không được bao gồm. Mọi người đang làm việc với nó, nhưng phải mất một thời gian để có được một triển khai hiệu quả.
Tuyên bố miễn trừ trách nhiệm: Tôi là một nhà phát triển học hỏi.
JBoost là một thư viện tuyệt vời. Nó chắc chắn không được viết bằng Python, tuy nhiên Nó hơi bất khả tri về ngôn ngữ, bởi vì nó có thể được thực thi từ dòng lệnh và do đó nó có thể được "điều khiển" từ Python. Tôi đã sử dụng nó trong quá khứ và thích nó rất nhiều, đặc biệt là các công cụ trực quan.
Tôi có cùng một vấn đề ngay bây giờ: Tôi viết mã bằng Python hàng ngày, thỉnh thoảng sử dụng R và cần một thuật toán cây hồi quy được tăng cường tốt. Mặc dù có rất nhiều gói Python tuyệt vời cho các phân tích nâng cao, nhưng việc tìm kiếm của tôi không tìm thấy một đề nghị tốt cho thuật toán cụ thể này. Vì vậy, con đường tôi nghĩ rằng tôi sẽ được tham gia trong những tuần tới là sử dụng gói GBM trong R . Có một bài báo tốt cho thấy các vấn đề thực tế với việc sử dụng nó có thể được tìm thấy ở đây . Điều quan trọng, gói GBM về cơ bản đã được sử dụng "ngoài giá" cho w trong Cup KDD 2009 . Vì vậy, có lẽ tôi sẽ thực hiện tất cả mô hình trước và sau của mình bằng Python và sử dụng RPy để quay lại với R / GBM.
Tôi đã trải qua tình huống tương tự với bạn, tôi thấy Orange rất khó điều chỉnh (có thể đó là vấn đề của tôi). Cuối cùng, tôi đã sử dụng mã của Peter Norivig cho cuốn sách nổi tiếng của mình, ở đó anh ấy đã cung cấp một khung mã được viết tốt cho cây, tất cả những gì bạn cần là thêm sự thúc đẩy trong đó. Bằng cách này, bạn có thể mã bất cứ điều gì bạn thích.
Cây quyết định - Ada Boosting
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score
Cây quyết định không tăng tốc
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)
Cây quyết định với 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)
Lắp mô hình và tính chính xác
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)