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 regressione in Databricks usando l'API di Python AutoML. Utilizzando il dataset della California sulle abitazioni, si utilizza automl.regress() per prevedere il valore mediano delle case, poi si utilizza la miglior versione di valutazione per eseguire l'inferenza su un set di test escluso.
Requisiti
Databricks Runtime per Machine Learning 8.3 o versione successiva.
Set di dati delle abitazioni in California
Questo set di dati è stato derivato dal censimento degli Stati Uniti del 1990, usando una riga per gruppo di blocchi di censimento. La variabile obiettivo è il valore mediano della casa per i distretti della California.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Divisione allenamento/test
from sklearn.model_selection import train_test_split
train_pdf, test_pdf = train_test_split(input_pdf.frame, test_size=0.01, random_state=42)
display(train_pdf)
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.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
Il comando seguente visualizza informazioni sull'output autoML.
help(summary)
Iterare sul modello
- Esplorare i notebook e gli esperimenti collegati sopra.
- Se le metriche per il miglior notebook di prova sono ottimali, passare direttamente alla sezione di inferenza.
- Per migliorare il modello generato dal migliore tentativo:
- Vai al notebook con la miglior prova e clonalo.
- Modificare il notebook in base alle esigenze per migliorare il modello. Ad esempio, è possibile provare iperparametri diversi.
- Quando si è soddisfatti del modello, prendere nota dell'URI in cui viene registrato l'artefatto per il modello sottoposto a training. Assegnare questo URI alla
model_urivariabile in Cmd 12.
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.
pandas DataFrame
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"
import mlflow
# Prepare test dataset
y_test = test_pdf["MedHouseVal"]
X_test = test_pdf.drop("MedHouseVal", axis=1)
# Run inference using the best model
model = mlflow.pyfunc.load_model(model_uri)
predictions = model.predict(X_test)
test_pdf["MedHouseVal_predicted"] = predictions
display(test_pdf)
Spark DataFrame
# Prepare the test dataset
test_df = spark.createDataFrame(test_pdf)
predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri)
display(test_df.withColumn("MedHouseVal_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.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Prepare the dataset
y_pred = test_pdf["MedHouseVal_predicted"]
test = pd.DataFrame({"Predicted":y_pred,"Actual":y_test})
test = test.reset_index()
test = test.drop(["index"], axis=1)
# plot graphs
fig= plt.figure(figsize=(16,8))
plt.plot(test[:50])
plt.legend(["Actual", "Predicted"])
sns.jointplot(x="Actual", y="Predicted", data=test, kind="reg");
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
Addestrare i modelli di regressione con
Ottieni notebook
Passaggi successivi
Informazioni di riferimento sulle API Python autoML.