如何在PySpark管道中使用XGboost

Dan*_* Du 7 apache-spark pyspark apache-spark-ml apache-spark-mllib xgboost

我想更新我的pyspark代码。在pyspark中,必须将基础模型放入管道中,管道的办公演示使用LogistictRegression作为基础模型。但是,似乎无法在管道API中使用XGboost模型。我该如何使用pyspark

from xgboost import XGBClassifier
...
model = XGBClassifier()
model.fit(X_train, y_train)
pipeline = Pipeline(stages=[..., model, ...])
...
Run Code Online (Sandbox Code Playgroud)

使用管道API很方便,因此有人可以提出建议吗?谢谢。

Pie*_*aud 5

Apache Spark ML 中没有 XGBoost 分类器(截至版本 2.3)。此处列出了可用模型:https://spark.apache.org/docs/2.3.0/ml-classification-regression.html

如果您想使用 XGBoost,您应该在没有 pyspark 的情况下进行操作(使用.toPandas())或使用其他算法(https://spark.apache.org/docs/2.3.0/api/python/pyspark.txt)。 ml.html#module-pyspark.ml.classification)。

但如果您确实想将 XGBoost 与 pyspark 一起使用,则必须深入研究 pyspark 自己实现分布式 XGBoost。这是他们这样做的文章:http://dmlc.ml/2016/10/26/a-full-integration-of-xgboost-and-spark.html


小智 5

如上所述(https://github.com/dmlc/xgboost)有一个维护的(由几家公司在生产中使用)分布式 XGBoost 库,但是从 PySpark 使用它有点棘手,有人为库的 0.72 版,正在支持 0.8。

请参阅此处https://medium.com/@bogdan.cojocar/pyspark-and-xgboost-integration-tested-on-the-kaggle-titanic-dataset-4e75a568bdbhttps://github.com/dmlc/xgboost/问题/1698进行全面讨论。

确保 xgboost jar 位于您的 pyspark jar 路径中。


Raf*_*ios 5

Spark 2.4 及以上有一个 XBoost 实现:

https://xgboost.readthedocs.io

请注意,这是一个外部库,但它应该可以轻松地与 Spark 配合使用。