Cây quyết định tăng cường trong trăn? [đóng cửa]


13

Có một thư viện python tốt để đào tạo cây quyết định tăng cường?


3
Rpy, tất nhiên ;-)

Tôi đồng ý với mbq. Có một lý do rất tốt tại sao bạn phải làm điều đó trong Python? Mặt khác, tôi cũng sẽ sử dụng workhorse R làm back-end.
Joris Meys

lý do duy nhất là tôi đã sử dụng R chỉ một vài lần trong một năm hoặc lâu hơn và con trăn tôi đang sử dụng hàng ngày ...
Andre Holzner

2
Rpy là một phụ thuộc thực sự khó chịu. R có một bộ tính năng khổng lồ, và do đó thật tuyệt khi có thể khai thác chúng bằng Rpy, nhưng nếu bạn phải chia sẻ công việc đó, bạn có thể gặp rắc rối, ngay cả khi nó ở trên các máy tính khác nhau của cùng một phòng thí nghiệm, nếu phòng thí nghiệm của bạn ở trong một môi trường điện toán không đồng nhất. Điều này là do thực tế là Rpy phụ thuộc vào việc có các phiên bản nhỏ của Python, numpy và R. Chẳng hạn, nó tiếp tục bị phá vỡ trong các bản phân phối Linux chính.
Gael Varoquaux

3
Câu trả lời ở đây dường như đã lỗi thời - chúng dường như đến từ thời điểm scikit.learn bắt đầu. Tôi nghĩ rằng độc giả và trang web sẽ có lợi nếu ai đó am hiểu đưa ra câu trả lời cập nhật.
Pere

Câu trả lời:


5

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:

  • scikit-họccác thư viện trong python và có một số thuật toán tuyệt vời cho cây quyết định tăng
  • cây quyết định được tăng cường "tốt nhất" trong python là triển khai XGBoost .

Cập nhật 1

  • Trong khi đó, LightGBM , mặc dù vẫn còn khá "mới", nhưng có vẻ tốt hơn hoặc thậm chí tốt hơn XGBoost

12

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à mlpyscikit.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



6

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

4
Tôi phát triển sữa. Nếu một trong hai bạn gặp phải bất kỳ vấn đề nào, xin vui lòng cho tôi biết qua email (lpc tại cmu dot edu). Báo cáo lỗi thường được sửa trong vòng dưới 24 giờ.
luispedro

Trong khi đó, tôi đã thêm tài liệu hơn một chút trên AdaBoost: packages.python.org/milk/adaboost.html nên những nhận xét trên có thể ít có giá trị hơn là trước đó.
luispedro

4

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.


1

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.


1

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.


0

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.


0

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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.