이 예제 Notebook에서는 AutoML Python API를 사용하여 Databricks에서 회귀 모델을 학습하는 방법을 보여 줍니다. 캘리포니아 주택 데이터 세트를 automl.regress() 사용하여 중간 주택 가격을 예측한 다음, 최상의 실험을 사용하여 보류된 테스트 집합에 대한 유추를 실행합니다.
Requirements
Machine Learning 8.3 이상에 대한 Databricks 런타임입니다.
캘리포니아 주택 데이터 세트
이 데이터 세트는 인구 조사 블록 그룹당 한 행을 사용하여 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)
훈련
다음 명령은 AutoML 실행을 시작합니다. 인수 target_col에서 모델이 예측해야 하는 열을 제공해야 합니다.
실행이 완료되면 최상의 평가판 전자 필기장 링크를 따라 학습 코드를 검사할 수 있습니다. 이 노트북에는 특징 중요도 그래프도 포함되어 있습니다.
from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
다음 명령은 AutoML 출력에 대한 정보를 표시합니다.
help(summary)
모델을 반복적으로 개선하기
- 위에 연결된 전자 필기장 및 실험을 탐색합니다.
- 최적의 실험 Notebook에 대한 메트릭이 우수할 경우, 추론 섹션으로 바로 이동하십시오.
- 최상의 평가판에서 생성된 모델을 개선하려면 다음을 수행합니다.
- 최상의 시도가 있는 노트북으로 이동하여 복제하십시오.
- 필요에 따라 Notebook을 편집하여 모델을 개선합니다. 예를 들어 다른 하이퍼 매개 변수를 시도할 수 있습니다.
- 모델에 만족하면 학습된 모델의 아티팩트가 기록되는 URI를 확인합니다. Cmd 12의 변수에
model_uri이 URI를 할당합니다.
유추
AutoML에서 학습된 모델을 사용하여 새 데이터에 대한 예측을 수행할 수 있습니다. 아래 예제에서는 pandas DataFrames의 데이터를 예측하거나 Spark DataFrames에 대한 예측을 위해 모델을 Spark UDF로 등록하는 방법을 보여 줍니다.
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()))
테스트
최종 모델을 사용하여 홀드아웃 테스트 집합을 예측하여 프로덕션 설정에서 모델이 수행되는 방식을 예측합니다.
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");
모델 등록 및 배포
MLflow 모델 레지스트리의 다른 모델과 마찬가지로 AutoML에서 학습된 모델을 등록하고 배포할 수 있습니다. 로그, 로드 및 MLflow 모델 등록을 참조하세요.
문제 해결: No module named pandas.core.indexes.numeric
Mosaic AI 모델 서비스로 AutoML 학습 모델을 제공하는 경우 오류가 No module named pandas.core.indexes.numeric표시될 수 있습니다. 이 문제는 AutoML에서 pandas 사용하는 버전이 엔드포인트 환경을 제공하는 모델의 버전과 다를 때 발생합니다. 해결하려면:
- add-pandas-dependency.py 스크립트를 다운로드합니다. 스크립트는 로깅된 모델의
requirements.txt와conda.yaml를 편집하여pandas==1.5.3를 고정합니다. - 모델이 기록된 MLflow 실행을 포함하도록 스크립트를
run_id편집합니다. - 모델을 다시 등록합니다.
- 새 모델 버전을 서비스합니다.