Lorsque vous effectuez un apprentissage automatique avec PySpark, la bibliothèque ML peut ne pas être entièrement fonctionnelle et vous pouvez utiliser une autre bibliothèque telle que scicit-learn.
L'apprentissage à ce moment-là doit être effectué séparément car le DataFrame de Spark ne le prend pas en charge en premier lieu, mais l'inférence peut être effectuée en douceur en utilisant UDF, elle est donc publiée comme un rappel.
Si vous avez un modèle entraîné (image model
: scikit-learn), procédez comme suit:
«data» est le DataFrame des données d'inférence et «features» est la liste des variables explicatives.
Ici, le résultat prédit par model.predict (x)
est retourné, et il est nécessaire de le remplacer par la fonction de prédiction du modèle créé le cas échéant.
De même, si la valeur de retour est une valeur continue, changez-la en «DoubleType ()».
Inférence utilisant un modèle entraîné sur pyspark
import pandas as pd
from pyspark.sql.functions import pandas_udf
from pyspark.sql.types import IntegerType
@pandas_udf(returnType=IntegerType())
def predict_udf(*cols):
X = pd.concat(cols, axis=1)
return pd.Series(model.predict(X))
data.withColumn('predict', predict_udf(*features))
Recommended Posts