Treine modelos de regressão com a API AutoML Python
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.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
divisão entre ensinar e testar
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.
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 .
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_urino 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
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)
DataFrame do Spark
# 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.
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:
- Baixe o script add-pandas-dependency.py. O script edita
requirements.txteconda.yamlpara os modelos registrados no pinpandas==1.5.3. - Edite o script para incluir o
run_idda execução MLflow onde o modelo foi registrado. - Registre novamente o modelo.
- Sirva a nova versão do modelo.