Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo notebook di esempio illustra come eseguire il training di un modello di classificazione in Databricks usando l'API di Python AutoML. Usando il set di dati UCI Census Income, si chiama automl.classify() per predire se un individuo guadagna più di $ 50.000 all'anno, quindi usare la miglior prova per eseguire l'inferenza sia su DataFrame pandas che Spark.
Requisiti
Databricks Runtime per Machine Learning.
Set di dati sul reddito del censimento
Questo set di dati contiene le informazioni del censimento tratte dal database del 1994. Ogni riga rappresenta un gruppo di singoli utenti. L'obiettivo è determinare se un gruppo ha un reddito di oltre 50.000 dollari all'anno. Questa classificazione è rappresentata come stringa nella colonna income con valori <=50K o >50k.
from pyspark.sql.types import DoubleType, StringType, StructType, StructField
schema = StructType([
StructField("age", DoubleType(), False),
StructField("workclass", StringType(), False),
StructField("fnlwgt", DoubleType(), False),
StructField("education", StringType(), False),
StructField("education_num", DoubleType(), False),
StructField("marital_status", StringType(), False),
StructField("occupation", StringType(), False),
StructField("relationship", StringType(), False),
StructField("race", StringType(), False),
StructField("sex", StringType(), False),
StructField("capital_gain", DoubleType(), False),
StructField("capital_loss", DoubleType(), False),
StructField("hours_per_week", DoubleType(), False),
StructField("native_country", StringType(), False),
StructField("income", StringType(), False)
])
input_df = spark.read.format("csv").schema(schema).load("/databricks-datasets/adult/adult.data")
Divisione allenamento/test
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)
Formazione
Il comando seguente avvia un'esecuzione autoML. È necessario specificare la colonna che il modello deve prevedere nell'argomento target_col .
Al termine dell'esecuzione, puoi seguire il collegamento per il notebook di prova migliore e esaminare il codice di addestramento. Questo notebook include anche un tracciato dell'importanza delle funzionalità.
from databricks import automl
summary = automl.classify(train_df, target_col="income", timeout_minutes=30)
Il comando seguente visualizza informazioni sull'output autoML.
help(summary)
Inferenza
È possibile usare il modello sottoposto a training da AutoML per eseguire stime sui nuovi dati. Gli esempi seguenti illustrano come fare previsioni sui dati in dataframe pandas o registrare il modello come UDF (funzione definita dall'utente) Spark per la previsione sui dataframe Spark.
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"
pandas DataFrame
import mlflow
# Prepare test dataset
test_pdf = test_df.toPandas()
y_test = test_pdf["income"]
X_test = test_pdf.drop("income", axis=1)
# Run inference using the best model
model = mlflow.pyfunc.load_model(model_uri)
predictions = model.predict(X_test)
test_pdf["income_predicted"] = predictions
display(test_pdf)
Spark DataFrame
predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type="string")
display(test_df.withColumn("income_predicted", predict_udf()))
Test
Usare il modello finale per eseguire stime sul set di test di controllo per stimare le prestazioni del modello in un'impostazione di produzione. Il diagramma mostra la suddivisione tra stime corrette e non corrette.
import sklearn.metrics
model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)
Registrare e distribuire il modello
È possibile registrare e distribuire un modello sottoposto a training da AutoML come qualsiasi altro modello nel Registro modelli MLflow. Consulta Registrare, caricare e registrare modelli MLflow.
Risoluzione dei problemi relativi: No module named pandas.core.indexes.numeric
Quando si serve un modello addestrato automaticamente con Mosaic AI Model Serving, è possibile che venga visualizzato l'errore No module named pandas.core.indexes.numeric. Ciò si verifica quando la pandas versione usata da AutoML è diversa da quella nell'ambiente endpoint di gestione del modello. Per risolvere:
- Scaricare lo script add-pandas-dependency.py. Lo script modifica
requirements.txteconda.yamlper fissarepandas==1.5.3al modello registrato. - Modificare lo script per includere l'ID
run_iddell'esecuzione di MLflow in cui è stato registrato il modello. - Registrare nuovamente il modello.
- Distribuire la nuova versione del modello.
Notebook di esempio
Eseguire il training dei modelli di classificazione con l'API Python autoML
Passaggi successivi
Informazioni di riferimento sulle API Python autoML.