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 sınıflandırma modelini eğitmeyi gösterir. UCI Census Geliri veri kümesini kullanarak, automl.classify() çağırarak bir bireyin yılda 50.000 Dolar'dan fazla kazanıp kazanmadığını tahmin edersiniz ve ardından hem pandas hem de Spark DataFrame'lerinde çıkarım yapmak için en iyi denemeyi kullanırsınız.
Requirements
Machine Learning için Databricks Runtime.
Nüfus sayımı gelir veri kümesi
Bu veri kümesi, 1994 nüfus sayımı veritabanındaki nüfus sayımı verilerini içerir. Her satır bir grup bir bireyi temsil eder. Amaç, bir grubun yılda 50 binden fazla gelire sahip olup olmadığını belirlemektir. Bu sınıflandırma, gelir sütununda veya <=50Kdeğerleriyle >50k bir dize olarak temsil edilir.
from pyspark.sql.types import DoubleType, StringType, StructType, StructField
schema = StructType([
StructField("age", DoubleType(), False),
StructField("workclass", StringType(), False),
StructField("fnlwgt", DoubleType(), False),
StructField("education", StringType(), False),
StructField("education_num", DoubleType(), False),
StructField("marital_status", StringType(), False),
StructField("occupation", StringType(), False),
StructField("relationship", StringType(), False),
StructField("race", StringType(), False),
StructField("sex", StringType(), False),
StructField("capital_gain", DoubleType(), False),
StructField("capital_loss", DoubleType(), False),
StructField("hours_per_week", DoubleType(), False),
StructField("native_country", StringType(), False),
StructField("income", StringType(), False)
])
input_df = spark.read.format("csv").schema(schema).load("/databricks-datasets/adult/adult.data")
Eğitim/test ayrımı
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)
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.classify(train_df, target_col="income", timeout_minutes=30)
Aşağıdaki komut AutoML çıkışı hakkındaki bilgileri görüntüler.
help(summary)
Çı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.
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"
pandas DataFrame (veri çerçevesi)
import mlflow
# Prepare test dataset
test_pdf = test_df.toPandas()
y_test = test_pdf["income"]
X_test = test_pdf.drop("income", axis=1)
# Run inference using the best model
model = mlflow.pyfunc.load_model(model_uri)
predictions = model.predict(X_test)
test_pdf["income_predicted"] = predictions
display(test_pdf)
Spark DataFrame
predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type="string")
display(test_df.withColumn("income_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. Diyagram, doğru ve yanlış tahminler arasındaki dökümü gösterir.
import sklearn.metrics
model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)
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.
Örnek defter
AutoML Python API'siyle sınıflandırma modellerini eğitin
not defteri alma