Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här exempelanteckningsboken visar hur du tränar en regressionsmodell på Databricks med hjälp av AutoML-Python-API:et. Med hjälp av datamängden för bostäder i Kalifornien anropar du automl.regress() för att förutsäga medianvärdet för husen och använder sedan bästa prov för att utföra inferens på en testuppsättning som hålls ute.
Kravspecifikation
Databricks Runtime för strojové učenie 8.3 eller senare.
Datauppsättning för bostäder i Kalifornien
Den här datamängden härleddes från folkräkningen i USA 1990 med hjälp av en rad per censusblockgrupp. Målvariabeln är medianvärdet för hus i Kalifornien.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Tränings-/testuppdelning
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)
Utbildning
Följande kommando startar en AutoML-körning. Du måste ange den kolumn som modellen ska förutsäga i target_col argumentet.
När körningen är klar kan du följa länken till den bästa utvärderingsanteckningsboken för att undersöka träningskoden. Den här anteckningsboken innehåller också ett diagram över funktioners betydelse.
from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
Följande kommando visar information om AutoML-utdata.
help(summary)
Iterera på modellen
- Utforska notebook-filerna och experimenten som är länkade ovan.
- Om måtten för den bästa utvärderingsanteckningsboken ser bra ut går du direkt till slutsatsdragningsavsnittet.
- Om du vill förbättra den modell som genereras av den bästa utvärderingsversionen:
- Gå till notebook-filen med den bästa utvärderingsversionen och klona den.
- Redigera anteckningsboken efter behov för att förbättra modellen. Du kan till exempel prova olika hyperparametrar.
- När du är nöjd med modellen bör du notera URI:n där artefakten för den tränade modellen loggas. Tilldela den här URI:n till variabeln
model_urii Cmd 12.
Slutsatsdragning
Du kan använda modellen som tränats av AutoML för att göra förutsägelser om nya data. Exemplen nedan visar hur du gör förutsägelser om data i Pandas DataFrames eller registrerar modellen som en Spark UDF för förutsägelse på Spark DataFrames.
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()))
Testa
Använd den slutliga modellen för att göra förutsägelser på holdout-testuppsättningen för att uppskatta hur modellen skulle prestera i en produktionsinställning.
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");
Registrera och distribuera modellen
Du kan registrera och distribuera en modell som tränats av AutoML som vilken annan modell som helst i MLflow Model Registry. Se Logga, läsa in och registrera MLflow-modeller.
Felsökning: No module named pandas.core.indexes.numeric
När du betjänar en AutoML-tränad modell med Mosaic AI Model Serving kan du se felet No module named pandas.core.indexes.numeric. Detta inträffar när den pandas version som används av AutoML skiljer sig från den i modellen som betjänar slutpunktsmiljön. Så här löser du följande:
-
Ladda ned add-pandas-dependency.py skriptet. Skriptet redigerar
requirements.txtochconda.yamlför att fästapandas==1.5.3till den loggade modellen. - Redigera skriptet så att det inkluderar
run_idför den MLflow-körning där modellen registrerades. - Registrera modellen igen.
- Hantera den nya modellversionen.