Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu örnek not defteri, AutoML Python API'sini kullanarak Databricks'te bir regresyon modelini eğitmeyi gösterir. California konut veri kümesi ile ortanca ev değerini tahmin etmek için automl.regress() çağırır ve ardından dışarıda tutulan test kümesinde çıkarım yapmak için en iyi denemeyi kullanırsınız.
Requirements
Machine Learning 8.3 veya üzeri için Databricks Runtime.
California konut veri kümesi
Bu veri kümesi, 1990 ABD nüfus sayımından türetilmiştir ve her sayım blok grubu için bir satır kullanılır. Hedef değişken, California bölgeleri için ortanca ev değeridir.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Eğitim/test ayrımı
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)
Eğitim
Aşağıdaki komut bir AutoML çalıştırması başlatır. Modelin target_col argümanında tahmin etmesi gereken sütunu belirtmelisiniz.
Çalıştırma tamamlandığında, eğitim kodunu incelemek için en iyi deneme not defterinin bağlantısını izleyebilirsiniz. Bu not defteri ayrıca bir özellik önem grafiği de içerir.
from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
Aşağıdaki komut AutoML çıkışı hakkındaki bilgileri görüntüler.
help(summary)
Modeli yineleyin
- Yukarıda bağlantılı not defterlerini ve denemeleri keşfedin.
- En iyi deneme not defteri ölçümleri iyi görünüyorsa doğrudan çıkarım bölümüne atlayın.
- En iyi deneme sürümü tarafından oluşturulan modeli geliştirmek istiyorsanız:
- En iyi deneme sürümünü içeren not defterine gidin ve kopyalayın.
- Modeli geliştirmek için not defterini gerektiği gibi düzenleyin. Örneğin, farklı hiper parametreler deneyebilirsiniz.
- Modelden memnun olduğunuzda, eğitilen modelin kaydedildiği URI'yi not edin. Bu URI'yi Cmd 12'deki değişkene atayın
model_uri.
Çıkarım
Yeni veriler hakkında tahminlerde bulunmak için AutoML tarafından eğitilen modeli kullanabilirsiniz. Aşağıdaki örneklerde pandas DataFrames'teki veriler üzerinde tahminde bulunma veya modeli Spark DataFrames'te tahmin için Spark UDF olarak kaydetme işlemleri gösterilmektedir.
pandas DataFrame (veri çerçevesi)
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()))
Sına
Modelin üretim ayarında nasıl performans göstereceğini tahmin etmek için bekleme testi kümesinde tahminlerde bulunmak için son modeli kullanın.
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");
Modeli kaydetme ve dağıtma
MLflow Model Kayıt Defteri'ndeki diğer modellerde olduğu gibi AutoML tarafından eğitilen bir modeli kaydedebilir ve dağıtabilirsiniz. Bkz. MLflow modellerini günlüğe kaydetme, kaydettirme ve yükleme.
Sorun giderme: No module named pandas.core.indexes.numeric
Model Sunumu ile AutoML tarafından eğitilmiş bir modeli sunarken No module named pandas.core.indexes.numeric hatasını görebilirsiniz. AutoML tarafından kullanılan sürüm, uç nokta ortamı sunan modeldeki sürümden farklı olduğunda pandas bu durum ortaya çıkar. Bunu çözmek için:
-
add-pandas-dependency.py betiğini indirin. Betik, günlüğe kaydedilen modeli sabitlemek için
requirements.txt,conda.yamlvepandas==1.5.3öğelerini düzenler. - Betiği, modelin
run_idgünlüğe kaydedildiği MLflow çalıştırmasını içerecek şekilde düzenleyin. - Modeli yeniden kaydedin.
- Yeni model sürümünü sunma.