Pular para o conteúdo principal

Treine modelos de regressão com a API AutoML Python

Open in Databricks

Este exemplo de Notebook mostra como ensinar um modelo de regressão no Databricks usando a API AutoML Python . Usando o dataset de habitação da Califórnia, você chama automl.regress() para prever o valor mediano da casa e, em seguida, usa a melhor inferência de tentativa para execução em um conjunto de teste reservado.

Requisitos​

Databricks Runtime para Machine Learning 8.3 ou superior.

datasetsobre habitação na Califórnia​

Este dataset foi derivado do censo dos EUA de 1990, utilizando uma linha por grupo de quarteirões censitários. A variável alvo é o valor mediano das casas nos distritos da Califórnia.

Python
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)

divisão entre ensinar e testar​

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

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.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)

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

Python
help(summary)

Iterar sobre o modelo​

  • Explore o caderno e os experimentos mencionados acima.
  • Se os critérios para o melhor Notebook de teste parecerem adequados, passe diretamente para a seção de inferência.
  • Se você deseja aprimorar o modelo gerado pelo melhor teste:
    • Acesse o Notebook com a melhor versão de avaliação e clone-o.
    • Edite o Notebook conforme necessário para aprimorar o modelo. Por exemplo, você pode experimentar diferentes hiperparâmetros.
    • Quando estiver satisfeito com o modelo, anote o URI onde o artefato do modelo treinado está armazenado. Atribua este URI à variável model_uri no Cmd 12.

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 .

DataFramePandas​

Python
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"
Python
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)

DataFrame do Spark​

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

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.

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

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 regressão com a API AutoML Python

Próximas etapas​

Referência da API Python do AutoML.