Wenn Sie maschinelles Lernen mit PySpark durchführen, ist die ML-Bibliothek möglicherweise nicht voll funktionsfähig, und Sie möchten möglicherweise eine andere Bibliothek wie scicit-learn verwenden.
Das Lernen zu diesem Zeitpunkt muss separat durchgeführt werden, da der DataFrame von Spark dies überhaupt nicht unterstützt. Die Inferenz kann jedoch mithilfe von UDF reibungslos durchgeführt werden, sodass es als Erinnerung veröffentlicht wird.
Wenn Sie ein geschultes Modell haben (model
: scikit-learn image), gehen Sie wie folgt vor:
data
ist der DataFrame der Inferenzdaten und features
ist die Liste der erklärenden Variablen.
Hier wird das von model.predict (x)
vorhergesagte Ergebnis zurückgegeben, und es muss gegebenenfalls durch die Vorhersagefunktion des erstellten Modells ersetzt werden.
Wenn der Rückgabewert ein kontinuierlicher Wert ist, ändern Sie ihn in "DoubleType ()".
Inferenz mit einem trainierten Modell auf 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