Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példajegyzetfüzet bemutatja, hogyan taníthat be regressziós modellt a Databricksen az AutoML Python API használatával. A kaliforniai lakásadatkészlettel a mediánház értékének előrejelzésére hívhatja fel automl.regress() , majd a legjobb próbaverzióval következtetést hajthat végre egy visszatartott tesztkészleten.
Követelmények
Databricks Runtime Machine Learning 8.3 vagy újabb verzióhoz.
Kaliforniai lakásadatkészlet
Ez az adatkészlet az 1990-ben történt amerikai összeírásból származik, a census blokkcsoportonként egy sort használva. A célváltozó a kaliforniai körzetek átlagos házértéke.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Betanítás/tesztelés felosztása
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
Az alábbi parancs elindít egy AutoML-futtatási parancsot. Meg kell adnia azt az oszlopot, amelyet a modellnek előre kell jeleznie az target_col argumentumban.
A futtatás befejezése után a legjobb próbaverziós jegyzetfüzetre mutató hivatkozást követve megvizsgálhatja a betanítási kódot. Ez a jegyzetfüzet egy funkció-fontossági diagramot is tartalmaz.
from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
Az alábbi parancs az AutoML-kimenettel kapcsolatos információkat jeleníti meg.
help(summary)
Iteráljuk a modellt
- Megismerheti a fent hivatkozott jegyzetfüzeteket és kísérleteket.
- Ha a legjobb próbaverziós jegyzetfüzet metrikái jól néznek ki, ugorjon közvetlenül a következtetési szakaszra.
- Ha javítani szeretne a legjobb próbaverzió által létrehozott modellen:
- Nyissa meg a jegyzetfüzetet a legjobb próbaverzióval, és klónozza.
- A modell továbbfejlesztéséhez szükség szerint szerkessze a jegyzetfüzetet. Előfordulhat például, hogy különböző hiperparamétereket próbál ki.
- Ha elégedett a modellel, jegyezze fel az URI-t, ahol a betanított modell összetevőjének naplózása történik. Rendelje hozzá ezt az URI-t a
model_uriváltozóhoz a Cmd 12 parancsban.
Következtetés
Az AutoML által betanított modell használatával előrejelzéseket készíthet az új adatokról. Az alábbi példák bemutatják, hogyan készíthet előrejelzéseket a pandas DataFrame-ekben lévő adatokról, vagy hogyan regisztrálhatja a modellt Spark UDF-ként a Spark DataFrame-eken való előrejelzéshez.
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()))
Test
Az utolsó modell használatával előrejelzéseket készíthet a visszatartottsági tesztkészletről, hogy megbecsülje, hogyan teljesít a modell egy éles környezetben.
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");
A modell regisztrálása és üzembe helyezése
Regisztrálhat és üzembe helyezhet egy AutoML által betanított modellt, mint bármely más modellt az MLflow Modellregisztrációs adatbázisában. Lásd: MLflow-modellek naplózása, betöltése és regisztrálása.
Hibaelhárítás: No module named pandas.core.indexes.numeric
Ha AutoML-betanított modellt szolgál ki a Model Service szolgáltatással, a hiba No module named pandas.core.indexes.numericjelenhet meg. Ez akkor fordul elő, ha az pandas AutoML által használt verzió eltér a végpontkörnyezetet kiszolgáló modell verziójától. A probléma megoldása:
- Töltse le a add-pandas-dependency.py szkriptet. A szkript szerkeszti a
requirements.txtésconda.yamlelemeket a naplózott modell számára, hogy rögzítse apandas==1.5.3. - Szerkessze a szkriptet annak az MLflow-futtatásnak a
run_idbeillesztéséhez, ahol a modellt naplózták. - Regisztrálja újra a modellt.
- Az új modellverzió kiszolgálása.