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 regressão em Databricks usando a API Python do AutoML. Usando o conjunto de dados de habitação da Califórnia, chama automl.regress() para prever o valor mediano das casas e depois usa a melhor tentativa para fazer inferência num conjunto de teste reservado.
Requisitos
Databricks Runtime para Machine Learning 8.3 ou superior.
Conjunto de dados habitacionais da Califórnia
Este conjunto de dados foi derivado do censo dos EUA de 1990, usando uma linha por grupo de blocos censitários. A variável-alvo é o valor mediano das casas para os distritos da Califórnia.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Divisão treino/teste
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)
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.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
O comando seguinte apresenta informações sobre a saída do AutoML.
help(summary)
Iterar sobre o modelo
- Explore os cadernos e experimentos acima mencionados.
- Se as métricas para o melhor notebook de testes estiverem boas, salte diretamente para a secção de inferência.
- Se quiser melhorar o modelo gerado pelo melhor ensaio:
- Vai ao caderno com o melhor teste e clona-o.
- Edite o caderno conforme necessário para melhorar o modelo. Por exemplo, podes experimentar diferentes hiperparâmetros.
- Quando estiver satisfeito com o modelo, note o URI onde o artefacto do modelo treinado é registado. Atribui este URI à
model_urivariável no Cmd 12.
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.
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()))
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.
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");
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 regressão com
Próximos passos
Referência da API Python do AutoML.