メインコンテンツまでスキップ

AutoML Python API を使用して回帰モデルをトレーニングする

このサンプルノートブックでは、AutoML Python APIを使用してDatabricks上で回帰モデルをトレーニングする方法を示します。カリフォルニアの住宅データセットを使用して、 automl.regress()を呼び出して住宅価格の中央値を予測し、最良の試行を使用して、保留されたテストセットで推論を実行します。

要件

Databricks Runtime for Machine Learning 8.3以降。

カリフォルニア州の住宅データセット

このデータセットは、1990年の米国国勢調査から抽出されたもので、国勢調査ブロックグループごとに1行のデータを使用しています。目的変数は、カリフォルニア州の各地区における住宅価格の中央値である。

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

トレーニングする/テスト分割

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)

トレーニング

以下のコマンドはAutoMLの実行を開始します。target_col引数には、モデルが予測する対象となる列を指定する必要があります。
実行が完了したら、最適な試用ノートブックへのリンクをクリックして、トレーニングコードを確認できます。このノートブックには重要な機能プロットも含まれています。

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

以下のコマンドは、AutoMLの出力に関する情報を表示します。

Python
help(summary)

モデルを反復処理する

  • 上にリンクされているノートブックと体験を探索してください。
  • 最良のトライアルノートブックのメトリクスが良さそうな場合は、直接推論セクションに進んでください。
  • 最良の試行で生成されたモデルを改善したい場合は、次の手順に従ってください。
    • 最も良い試行結果が得られたノートブックを開き、それを複製してください。
    • モデルを改善するために、必要に応じてノートブックを編集してください。例えば、異なるハイパーパラメータを試してみると良いでしょう。
    • モデルに満足したら、トレーニングされたモデルのアーティファクトが記録されている URI をメモします。 コマンド12のmodel_uri変数にこのURIを割り当ててください。

推論

AutoMLで学習させたモデルを使って、新しいデータに対する予測を行うことができます。以下の例は、 Pandas DataFramesのデータに対して予測を行う方法、またはSpark DataFramesに対する予測のためにモデルをSpark UDFとして登録する方法を示しています。

Pandas データフレーム

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)

Spark DataFrame

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

テスト

最終モデルを使用してホールドアウトテストセットで予測を行い、モデルが本番運用環境でどのように機能するかを推定します。

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

モデルを登録してデプロイする

AutoMLでトレーニングされたモデルは、他のモデルと同様にMLflow Model Registryに登録してデプロイできます。 「ログ、ロード、および登録するMLflowモデル」を参照してください。

トラブルシューティング: No module named pandas.core.indexes.numeric

Mosaic AI Model Serving で AutoML でトレーニングされたモデルを提供すると、エラーNo module named pandas.core.indexes.numericが表示される場合があります。これは、 AutoMLで使用されるpandasバージョンがモデルサービング エンドポイント環境のものと異なる場合に発生します。 解決するには:

  1. add-pandas-dependency.py スクリプトをダウンロードしてください。スクリプトは記録済みモデルのrequirements.txtconda.yamlをピン留めpandas==1.5.3に編集します。
  2. スクリプトを編集して、モデルがログに記録されたMLflow実行のrun_idを含めるようにします。
  3. モデルを再登録します。
  4. 新モデル版を提供してください。

サンプルノートブック

AutoML Python API を使用して回帰モデルをトレーニングする

ノートブックを新しいタブで開く

次のステップ

AutoML Python API リファレンス