web-dev-qa-db-ja.com

PySpark PipelineでXGboostを使用する方法

Pysparkのコードを更新したい。 pysparkでは、ベースモデルをパイプラインに配置する必要があります。パイプラインの office demo は、LogistictRegressionをベースモデルとして使用します。ただし、パイプラインAPIではXGboostモデルを使用できないようです。このようにpysparkを使用するにはどうすればよいですか

from xgboost import XGBClassifier
...
model = XGBClassifier()
model.fit(X_train, y_train)
pipeline = Pipeline(stages=[..., model, ...])
...

パイプラインAPIを使用すると便利です。だれかからアドバイスをいただけますか?ありがとう。

7
Daniel Du

上記のように、XGBoostライブラリが配布されている(複数の企業で実稼働で使用されています)( https://github.com/dmlc/xgboost )ただし、PySparkから使用するのは少し面倒です。誰かがライブラリのバージョン0.72のpysparkラッパーを作成し、0.8のサポートを進行中です。

こちらをご覧ください https://medium.com/@bogdan.cojocar/pyspark-and-xgboost-integration-tested-on-the-kaggle-titanic-dataset-4e75a568bdb 、および https://github.com/dmlc/xgboost/issues/1698 を参照してください。

Xgboost jarがpyspark jarパスにあることを確認してください。

4
Rafael

ApacheにはXGBoost分類子はありませんSpark ML(バージョン2.3以降)。使用可能なモデルは次のとおりです。 https://spark.Apache.org/docs/2.3.0 /ml-classification-regression.html

XGBoostを使用する場合は、pysparkなしで実行する必要があります(sparkデータフレームをpandasデータフレーム.toPandas())に変換するか、別のアルゴリズム( https://spark.Apache.org/docs/2.3.0/api/python/pyspark.ml.html#module-pyspark.ml.classification )。

しかし、本当にpysparkでXGBoostを使用したい場合は、pysparkに飛び込んで、分散XGBoostを自分で実装する必要があります。ここに彼らがそうする記事があります: http://dmlc.ml/2016/10/26/a-full-integration-of-xgboost-and-spark.html

3

Spark 2.4以降のXBoost実装があります:

https://xgboost.readthedocs.io

これは外部ライブラリですが、sparkで簡単に動作するはずです。

2
Rafael Larios