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 klassificeringsmodell på Databricks med hjälp av AutoML-Python-API:et. Med datamängden UCI Census Income anropar du automl.classify() för att förutsäga om en individ tjänar mer än 50 000 USD per år och sedan använder det bästa testet för att utföra inferens på både Pandas och Spark DataFrames.
Kravspecifikation
Databricks Runtime för maskininlärning.
Datauppsättning för folkräkningsintäkter
Den här datamängden innehåller censusdata från 1994 års folkräkningsdatabas. Varje rad representerar en grupp individer. Målet är att avgöra om en grupp har en inkomst på över 50 000 om året eller inte. Den här klassificeringen representeras som en sträng i inkomstkolumnen med värden <=50K eller >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")
Tränings-/testuppdelning
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)
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.classify(train_df, target_col="income", timeout_minutes=30)
Följande kommando visar information om AutoML-utdata.
help(summary)
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.
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()))
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. Diagrammet visar uppdelningen mellan korrekta och felaktiga förutsägelser.
import sklearn.metrics
model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)
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.