Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом примере блокнота показано, как обучить модель регрессии в 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, отличается от версии в среде конечной точки обслуживания модели. Чтобы устранить проблему, сделайте следующее:
-
Скачайте скрипт «add-pandas-dependency.py». Скрипт редактирует
requirements.txtиconda.yamlдля закрепленияpandas==1.5.3на зарегистрированной модели. - Измените скрипт, чтобы включить
run_idзапуск MLflow, в котором была зарегистрирована модель. - Повторно зарегистрируйте модель.
- Обслуживают новую версию модели.