Pular para o conteúdo principal

Treine modelos de classificação com a API Python do AutoML

Este exemplo de Notebook mostra como ensinar um modelo de classificação no Databricks usando a API AutoML Python . Usando o dataset UCI Census Income, você chama automl.classify() para prever se um indivíduo ganha mais de US$ 50 mil por ano e, em seguida, usa a inferência de melhor tentativa para execução em DataFrames Pandas e Spark .

Requisitos

Databricks Runtime para Aprendizado de Máquina.

datasetde rendaCensus

Este dataset contém dados censitários do censo de 1994. Cada linha representa um grupo de indivíduos. O objetivo é determinar se um grupo tem uma renda superior a 50 mil por ano ou não. Esta classificação é representada como strings na coluna de renda com valores <=50K ou >50k.

Python
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")

divisão entre ensinar e testar

Python
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)

treinamento

O comando a seguir inicia uma execução AutoML . Você deve fornecer a coluna que o modelo deve prever no argumento target_col .
Quando a execução for concluída, você poderá acessar o link para o Notebook de teste para examinar o código de treinamento. Este Caderno também inclui um recurso gráfico de importância.

Python
from databricks import automl
summary = automl.classify(train_df, target_col="income", timeout_minutes=30)

O comando a seguir exibe informações sobre a saída AutoML .

Python
help(summary)

Inferência

Você pode usar o modelo treinado pelo AutoML para fazer previsões em novos dados. Os exemplos abaixo demonstram como fazer previsões em dados em DataFrames Pandas ou registrar o modelo como uma UDF Spark para previsão em DataFrames Spark .

Python
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"

DataFramePandas

Python
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)

DataFrame do Spark

Python
predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type="string")
display(test_df.withColumn("income_predicted", predict_udf()))

Teste

Utilize o modelo final para fazer previsões no conjunto de teste reservado, a fim de estimar o desempenho do modelo em um ambiente de produção. O diagrama mostra a distribuição entre previsões corretas e incorretas.

Python
import sklearn.metrics

model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)

registrar e implantar o modelo

Você pode registrar e implantar um modelo treinado pelo AutoML como qualquer outro modelo no MLflow Model Registry. Veja os modelos MLflow de log, carregamento e registro.

Solução de problemas: No module named pandas.core.indexes.numeric

Ao servir um modelo treinado com AutoML com servir modelo, você pode ver o erro No module named pandas.core.indexes.numeric. Isso acontece quando a versão pandas usada pelo AutoML difere daquela no ambiente endpoint do modelo de serviço. Para resolver:

  1. Baixe o script add-pandas-dependency.py. O script edita requirements.txt e conda.yaml para os modelos registrados no pin pandas==1.5.3.
  2. Edite o script para incluir o run_id da execução MLflow onde o modelo foi registrado.
  3. Registre novamente o modelo.
  4. Sirva a nova versão do modelo.

Exemplo de caderno

Treine modelos de classificação com a API Python do AutoML

Abrir notebook em uma nova aba

Próximas etapas

Referência da API Python do AutoML.