web-dev-qa-db-fra.com

Comment utiliser XGboost dans PySpark Pipeline

Je veux mettre à jour mon code de pyspark. Dans le pyspark, il doit placer le modèle de base dans un pipeline, le démonstration de burea du pipeline utilise LogistictRegression comme modèle de base. Cependant, il ne semble pas possible d'utiliser le modèle XGboost dans l'API du pipeline. Comment puis-je utiliser le pyspark comme ceci

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

Il est pratique d'utiliser l'API du pipeline, alors quelqu'un peut-il donner des conseils? Merci.

7
Daniel Du

Il existe une bibliothèque XGBoost distribuée maintenue (utilisée en production par plusieurs sociétés) comme mentionné ci-dessus ( https://github.com/dmlc/xgboost ), mais l'utiliser à partir de PySpark est un peu délicat, quelqu'un a créé un wrapper pyspark fonctionnel pour la version 0.72 de la bibliothèque, avec le support 0.8 en cours.

Voir ici https://medium.com/@bogdan.cojocar/pyspark-and-xgboost-integration-tested-on-the-kaggle-titanic-dataset-4e75a568bdb , et https : //github.com/dmlc/xgboost/issues/1698 pour la discussion complète.

Assurez-vous que les pots xgboost se trouvent dans votre chemin de pot pyspark.

4
Rafael

Il n'y a pas de classificateur XGBoost dans Apache Spark ML (à partir de la version 2.3). Les modèles disponibles sont répertoriés ici: https://spark.Apache.org/docs/2.3.0 /ml-classification-regression.html

Si vous souhaitez utiliser XGBoost, vous devez le faire sans pyspark (convertissez votre spark dataframe en un pandas dataframe avec .toPandas()) ou utilisez un autre algorithme ( https://spark.Apache.org/docs/2.3.0/api/python/pyspark.ml.html#module-pyspark.ml.classification ).

Mais si vous voulez vraiment utiliser XGBoost avec pyspark, vous devrez plonger dans pyspark pour implémenter vous-même un XGBoost distribué. Voici un article où ils le font: http://dmlc.ml/2016/10/26/a-full-integration-of-xgboost-and-spark.html

3
Pierre Gourseaud

Il existe une implémentation XBoost pour Spark 2.4 et plus ici:

https://xgboost.readthedocs.io

Notez qu'il s'agit d'une bibliothèque externe mais qu'elle devrait fonctionner facilement avec spark.

2
Rafael Larios