Обучение моделей регрессии с помощью API Python AutoML

В этом примере блокнота показано, как обучить модель регрессии в Databricks с помощью API AutoML Python. Используя набор данных о жилье в Калифорнии, вы вызываете automl.regress(), чтобы предсказать медианную стоимость дома, а затем используете оптимальную попытку для выполнения вывода по отложенному тестовому набору.

Требования

Databricks Runtime для Машинное обучение 8.3 или более поздней версии.

Набор данных о жилье в Калифорнии

Этот набор данных был получен из переписи населения США 1990 года, используя одну строку для каждой группы блоков переписи. Целевая переменная — это медианная стоимость дома для калифорнийских районов.

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

Разделение обучения и тестирования

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

Следующая команда запускает процесс AutoML. Необходимо указать столбец, который модель должна прогнозировать в аргументе target_col .
По завершении выполнения можно перейти по ссылке на лучшую пробную тетрадь для изучения программного кода обучения. Эта записная книжка также содержит график важности признаков.

from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)

Следующая команда отображает сведения о выходных данных AutoML.

help(summary)

Итерация модели

  • Изучите записные книжки и эксперименты, указанные выше.
  • Если метрики для лучшей пробной записной книжки выглядят хорошо, перейдите непосредственно к разделу вывода.
  • Если вы хотите улучшить модель, созданную лучшей пробной версией, выполните следующие действия.
    • Перейдите к ноутбуку с лучшим испытанием и клонируйте его.
    • Измените записную книжку по мере необходимости, чтобы улучшить модель. Например, можно попробовать различные гиперпараметры.
    • Если вы удовлетворены моделью, обратите внимание на универсальный код ресурса (URI), в котором регистрируется артефакт обученной модели. Присвойте этот универсальный код ресурса (URI) переменной model_uri в команде Cmd 12.

Вывод

Модель, обученную AutoML, можно использовать для прогнозирования новых данных. В приведенных ниже примерах показано, как выполнять прогнозирование на данных в DataFrames pandas или регистрировать модель в качестве UDF Spark для прогнозирования на DataFrames Spark.

DataFrame pandas

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

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

Проверочный

Используйте окончательную модель для прогнозирования на выделенном тестовом наборе, чтобы оценить, как модель будет работать в рабочей среде.

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

Регистрация и развертывание модели

Вы можете зарегистрировать и развернуть модель, обученную autoML, как и любую другую модель в реестре моделей MLflow. См. журналирование, загрузку и регистрацию моделей MLflow.

Устранение неполадок: No module named pandas.core.indexes.numeric

При обслуживании обученной autoML-модели с помощью службы моделей может возникнуть ошибка No module named pandas.core.indexes.numeric. Это происходит, когда pandas версия, используемая AutoML, отличается от версии в среде конечной точки обслуживания модели. Чтобы устранить проблему, сделайте следующее:

  1. Скачайте скрипт «add-pandas-dependency.py». Скрипт редактирует requirements.txt и conda.yaml для закрепления pandas==1.5.3 на зарегистрированной модели.
  2. Измените скрипт, чтобы включить run_id запуск MLflow, в котором была зарегистрирована модель.
  3. Повторно зарегистрируйте модель.
  4. Обслуживают новую версию модели.

Пример записной книжки

Обучение моделей регрессии с помощью

Получите ноутбук

Следующие шаги

Справочник по API AutoML Python.