Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este caderno de exemplo mostra como treinar um modelo de classificação em Databricks usando a API Python do AutoML. Usando o conjunto de dados UCI Census Income, chama automl.classify() para prever se um indivíduo ganha mais de $50K por ano, e usa a melhor tentativa para fazer inferência tanto nos pandas como nos Spark DataFrames.
Requirements
Databricks Runtime para Aprendizagem Automática.
Conjunto de dados de rendimento do censo
Este conjunto de dados contém dados do censo da base de dados do censo de 1994. Cada linha representa um grupo de indivíduos. O objetivo é determinar se um grupo tem um rendimento superior a 50 mil por ano ou não. Esta classificação é representada como uma cadeia na coluna de rendimentos com valores <=50K ou >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")
Divisão treino/teste
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)
Training
O comando seguinte inicia uma execução do AutoML. Deve fornecer, no argumento target_col, a coluna que o modelo deve prever.
Quando a corrida terminar, pode seguir o link para o melhor caderno de testes para examinar o código de treino. Este notebook inclui também um gráfico de importância de variáveis.
from databricks import automl
summary = automl.classify(train_df, target_col="income", timeout_minutes=30)
O comando seguinte apresenta informações sobre a saída do AutoML.
help(summary)
Inferência
Pode usar o modelo treinado pelo AutoML para fazer previsões sobre novos dados. Os exemplos abaixo demonstram como fazer previsões sobre dados em DataFrames Pandas, ou registrar o modelo como um UDF Spark para previsão em DataFrames 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()))
Testar
Use o modelo final para fazer previsões sobre o conjunto de testes holdout e estimar como o modelo se comportaria num ambiente de produção. O diagrama mostra a divisão entre previsões corretas e incorretas.
import sklearn.metrics
model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)
Registar e implementar o modelo
Pode registar e implementar um modelo treinado por AutoML como qualquer outro modelo no MLflow Model Registry. Veja Log, load e registe modelos MLflow.
Resolução de Problemas: No module named pandas.core.indexes.numeric
Ao servir um modelo treinado em AutoML com o Mosaic AI Model Serving, pode ver o erro No module named pandas.core.indexes.numeric. Isto acontece quando a pandas versão usada pelo AutoML difere daquela no ambiente de endpoint de serviço do modelo. Para resolver:
- Faça o download do add-pandas-dependency.py script. O script edita
requirements.txteconda.yamlpara fixarpandas==1.5.3no modelo registado. - Edite o script para incluir a
run_idda execução do MLflow onde o modelo foi registado. - Regista novamente o modelo.
- Sirva a nova versão do modelo.
Bloco de notas de exemplo
Treinar modelos de classificação com AutoML Python API
Próximos passos
Referência da API Python do AutoML.