Pythonで決定木をブーストしましたか?[閉まっている]


13

ブーストされた決定木をトレーニングするための優れたpythonライブラリはありますか?


3
Rpy、もちろん;-)

私はmbqに同意します。あなたがPythonでそれをしなければならない理由は非常にありますか?それ以外の場合は、主力のRをバックエンドとしても使用します。
ジョリスメイズ

唯一の理由私は1年ほど前、使用済みのRにのみ、非常に数回を持っているということで、私が毎日使っているのpython ...
アンドレホルズナー

2
Rpyは非常に厄介な依存関係です。Rには多数の機能があるため、Rpyを使用して掘り下げることができますが、その作業を共有する必要がある場合は、同じラボの異なるコンピューターにまたがっていても、問題が発生する可能性があります。ラボが異種コンピューティング環境にある場合。これは、RpyがPython、numpy、Rの適切なマイナーバージョンを持っていることに依存しているためです。たとえば、主要なLinuxディストリビューションでは壊れ続けています。
ガエルバロクオー

3
ここでの回答は時代遅れに思えます-scikit.learnが始まったときから来ているようです。知識のある誰かが最新の答えを出せば、読者とサイトは利益を得ると思います。
ペール

回答:


5

更新された回答

状況は大きく変化しており、その答えは最近明らかになっています。

  • scikit-learnはPython ライブラリであり決定木をブーストするための優れたアルゴリズムがいくつかあります
  • Pythonで「最適な」ブーストされた決定木は、XGBoostの実装です。

アップデート1

  • 一方、LightGBMは、まだかなり「新しい」ものの、XGBoostよりも同等に優れているか、さらに優れているようです。

12

私が最初に見るのはOrangeで、これはML用のフル機能のアプリで、Pythonのバックエンドを備えています。たとえば、orngEnsembleを参照してください。

他の有望なプロジェクトはmlpyscikit.learnです。

PyCVにはいくつかのブースト手順が含まれていることは知っていますが、明らかにCART用ではありません。MLboostご覧ください



6

Milk:Machine Learning Toolkit for Pythonのツリーベースの学習者で大成功を収めました。活発に開発されているようですが、私がそれを使用していたときのドキュメントは少しまばらでした。テストスイート(github.com/luispedro/milk/blob/master/tests/test_adaboost.py)には「ブーストされた切り株」が含まれています。

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
私は牛乳を開発します。いずれかで問題が発生した場合は、メール(lpc at cmu dot edu)でお知らせください。バグレポートは通常24時間以内に修正されます。
ルイスペドロ

その間、adaboostに関するドキュメントをもう少し追加しました。 packages.python.org/milk/adaboost.html上記のコメントは、それが以前あったより少なく有効であるかもしれないので。
ルイスペドロ

4

scikit-learnには、適切な回帰(および分類)ツリーとランダムフォレストの実装があります。ただし、ブーストされたツリーはまだ含まれていません。人々はそれに取り組んでいますが、効率的な実装を得るには時間がかかります。

免責事項:私はscikit-learn開発者です。


1

JBoostは素晴らしいライブラリです。Pythonで書かれているわけではありませんが、コマンドラインなどから実行でき、Pythonから「駆動」できるため、言語にとらわれません。私は過去にそれを使用しており、特に視覚化のものが大好きでした。


1

私は今も同じ問題を抱えています:私は毎日Pythonでコーディングし、Rを時々使用しますが、優れたブーストされた回帰ツリーアルゴリズムが必要です。高度な分析用の優れたPythonパッケージは数多くありますが、この特定のアルゴリズムに適した製品は見つかりませんでした。したがって、今後数週間のうちに採用する予定のルートは、RでGBMパッケージを使用することです。ここで見つけることができる実用的な問題を示す良い論文があります。重要なことに、GBMパッケージは基本的に2009 KDD Cupで w 「既製」で使用されていました。そのため、おそらくPythonですべての事前および事後モデリングを行い、RPyを使用してR / GBMとやり取りします。


0

私はあなたと同様の状況を経験しました、私はオレンジが調整するのが難しいと思います(多分それは私の問題です)。最後に、私は彼の有名な本にPeter Norivigのコードを使用しました。そこで彼は、ツリーのためのよく書かれたコードフレームワークを提供しました。このようにして、好きなものをコーディングできます。


0

決定木-Ada Boosting

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score

ブースティングなしの決定木

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を使用したデシジョンツリー

clf_entropy_ada = AdaBoostClassifier(base_estimator= clf_entropy_no_ada,n_estimators=400,learning_rate=1)
clf_entropy_ada.fit(X_train, y_train)

モデルの適合と精度の計算

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.