Azure Databricks AutoML Python API'siyle ML modellerini eğitin
Bu makalede, API kullanarak Azure Databricks AutoML ile bir modelin nasıl eğitilmiş olduğu gösterilmektedir. AutoML nedir? hakkında daha fazla bilgi edinin. Python API'sinde sınıflandırma, regresyon ve AutoML çalıştırmalarını tahmin etmeye yönelik işlevler sağlanır. Her işlev çağrısı bir model kümesi eğitir ve her model için bir deneme not defteri oluşturur.
Aşağıdaki adımlar genel olarak API'yi kullanarak AutoML denemesinin nasıl ayarlandığını açıklar:
- Bir not defteri oluşturun ve Databricks Runtime ML çalıştıran bir kümeye ekleyin.
- Mevcut veri kaynağınızdan kullanmak istediğiniz tabloyu belirleyin veya DBFS'ye veri dosyası yükleyip bir tablo oluşturun.
- AutoML çalıştırmasını başlatmak için tablo adını uygun API belirtimine geçirin: sınıflandırma, regresyon veya tahmin.
- AutoML çalıştırması başladığında, konsolunda bir MLflow deneme URL'si görüntülenir. Çalıştırmanın ilerleme durumunu izlemek için bu URL'yi kullanın. Denemeler tamamlandıktan sonra görmek için MLflow denemesini yenileyin.
- AutoML çalıştırması tamamlandıktan sonra:
- MLflow denemesine veya en iyi sonuçları oluşturan not defterine gitmek için çıkış özetindeki bağlantıları kullanın.
- AutoML'ye geçirilen veriler hakkında bazı içgörüler elde etmek için veri araştırma not defterinin bağlantısını kullanın. Ayrıca bu not defterini aynı kümeye ekleyebilir ve sonuçları yeniden oluşturmak veya ek veri çözümlemesi yapmak için not defterini yeniden çalıştırabilirsiniz.
- Denemeler hakkında daha fazla ayrıntı keşfetmek veya belirli bir deneme sürümü tarafından eğitilen bir modeli yüklemek için AutoML çağrısından döndürülen özet nesnesini kullanın. AutoMLSummary nesnesi hakkında daha fazla bilgi edinin.
- Denemelerden oluşturulan tüm not defterlerini kopyalayın ve sonuçları yeniden oluşturmak için not defterini aynı kümeye ekleyerek yeniden çalıştırın. Ayrıca ek modelleri eğitmek ve bunları aynı denemede günlüğe kaydetmek için gerekli düzenlemeleri yapabilir ve bunları yeniden çalıştırabilirsiniz.
Gereksinimler
Bkz . AutoML denemeleri için gereksinimler .
Sınıflandırma belirtimi
Aşağıdaki kod örneği, sınıflandırma modelini eğiten bir AutoML çalıştırmasını yapılandırıyor. AutoML çalıştırmanızı daha fazla özelleştirmeye yönelik ek parametreler için bkz . Sınıflandırma ve regresyon parametreleri.
Not
max_trials
Parametresi Databricks Runtime 10.4 ML'de kullanım dışıdır ve Databricks Runtime 11.0 ML ve üzeri sürümleri için desteklenmez. AutoML çalıştırmasının süresini denetlemek için kullanın timeout_minutes
.
databricks.automl.classify(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
data_dir: Optional[str] = None,
exclude_cols: Optional[List[str]] = None, # <DBR> 10.3 ML and above
exclude_frameworks: Optional[List[str]] = None, # <DBR> 10.3 ML and above
experiment_dir: Optional[str] = None, # <DBR> 10.4 LTS ML and above
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 11.3 LTS ML and above
imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
max_trials: Optional[int] = None, # <DBR> 10.5 ML and below
pos_label: Optional[Union[int, bool, str] = None, # <DBR> 11.1 ML and above
primary_metric: str = "f1",
time_col: Optional[str] = None,
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
Regresyon belirtimi
Aşağıdaki kod örneği, regresyon modelini eğitme amacıyla bir AutoML çalıştırması yapılandırılır. AutoML çalıştırmanızı daha fazla özelleştirmeye yönelik ek parametreler için bkz . Sınıflandırma ve regresyon parametreleri.
Not
max_trials
Parametresi Databricks Runtime 10.4 ML'de kullanım dışıdır ve Databricks Runtime 11.0 ML ve üzeri sürümleri için desteklenmez. AutoML çalıştırmasının süresini denetlemek için kullanın timeout_minutes
.
databricks.automl.regress(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
data_dir: Optional[str] = None,
exclude_cols: Optional[List[str]] = None, # <DBR> 10.3 ML and above
exclude_frameworks: Optional[List[str]] = None, # <DBR> 10.3 ML and above
experiment_dir: Optional[str] = None, # <DBR> 10.4 LTS ML and above
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 11.3 LTS ML and above
imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
max_trials: Optional[int] = None, # <DBR> 10.5 ML and below
primary_metric: str = "r2",
time_col: Optional[str] = None,
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
Tahmin belirtimi
Aşağıdaki kod örneği, tahmin modelini eğiten bir AutoML çalıştırmasını yapılandırıyor. AutoML çalıştırmanızın parametreleri hakkında daha fazla ayrıntı için bkz . Parametreleri tahmin etme. Otomatik ARIMA'yı kullanmak için zaman serisinin düzenli bir sıklığı olmalıdır (diğer bir ifadeyle, iki nokta arasındaki aralık zaman serisi boyunca aynı olmalıdır). Sıklık, API çağrısında belirtilen sıklık birimiyle eşleşmelidir. AutoML, bu değerleri önceki değerle doldurarak eksik zaman adımlarını işler.
databricks.automl.forecast(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
time_col: str,
country_code: str = "US", # <DBR> 12.0 ML and above
data_dir: Optional[str] = None,
exclude_frameworks: Optional[List[str]] = None,
experiment_dir: Optional[str] = None,
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 12.2 LTS ML and above
frequency: str = "D",
horizon: int = 1,
identity_col: Optional[Union[str, List[str]]] = None,
output_database: Optional[str] = None, # <DBR> 10.5 ML and above
primary_metric: str = "smape",
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
Sınıflandırma ve regresyon parametreleri
Not
Yalnızca sınıflandırma ve regresyon sorunları için şunları yapabilirsiniz:
- Eğitime eklenecek sütunları belirtin.
- Özel imputation yöntemlerini seçin.
Alan Adı | Type | Açıklama |
---|---|---|
veri kümesi | str pandas. DataFrame pyspark. DataFrame pyspark.sql.DataFrame | Eğitim özellikleri ve hedefi içeren giriş tablosu adı veya DataFrame. Tablo adı ".." biçiminde olabilir veya "." Unity Kataloğu olmayan tablolar için |
target_col | Str | Hedef etiketin sütun adı. |
data_dir | biçim str'idbfs:/<folder-name> |
(İsteğe bağlı) Eğitim veri kümesini depolamak için kullanılan DBFS yolu. Bu yol hem sürücü hem de çalışan düğümleri tarafından görülebilir. Databricks, AutoML'nin eğitim veri kümesini MLflow yapıtı olarak kaydedebilmesi için bu alanı boş bırakmanızı önerir. Özel bir yol belirtilirse, veri kümesi AutoML denemesinin erişim izinlerini devralmaz. |
exclude_cols | Liste[str] | (İsteğe bağlı) AutoML hesaplamaları sırasında yoksayılan sütunların listesi. Varsayılan: [] |
exclude_ çerçeveleri | Liste[str] | (İsteğe bağlı) AutoML'nin model geliştirirken dikkate almaması gereken algoritma çerçevelerinin listesi. Olası değerler: boş liste veya bir veya daha fazla "sklearn", "lightgbm", "xgboost". Varsayılan: [] (tüm çerçeveler dikkate alınır) |
experiment_dir | Str | (İsteğe bağlı) Oluşturulan not defterlerini ve denemeleri kaydetmek için çalışma alanında dizinin yolu. Varsayılan: /Users/<username>/databricks_automl/ |
experiment_name | Str | (İsteğe bağlı) AutoML'nin oluşturduğu MLflow denemesinin adı. Varsayılan: Ad otomatik olarak oluşturulur. |
feature_store_ aramaları | Liste[Dikte] | (İsteğe bağlı) Veri artırma için Özellik Deposu'ndan özellikleri temsil eden sözlüklerin listesi. Her sözlükte geçerli anahtarlar şunlardır: * table_name (str): Gerekli. Özellik tablosunun adı. * lookup_key (liste veya str): Gerekli. Özellik tablosunu içinde geçirilen verilerle birleştirirken anahtar olarak kullanılacak sütun adları dataset parametresini seçin. Sütun adlarının sırası, özellik tablosunun birincil anahtarlarının sırasıyla eşleşmelidir.* timestamp_lookup_key (str): Belirtilen tablo bir zaman serisi özellik tablosuysa gereklidir. Parametrede geçirilen dataset verilerle özellik tablosunda belirli bir noktaya arama gerçekleştirirken kullanılacak sütun adı.Varsayılan: [] |
imputers | Dict[str, Union[str, Dict[str, Any]]] | (İsteğe bağlı) Her anahtarın bir sütun adı olduğu ve her değerin imputation stratejisini açıklayan bir dize veya sözlük olduğu sözlük. Dize olarak belirtilirse, değer "ortalama", "ortanca" veya "most_frequent" olmalıdır. Bilinen bir değerle empute yapmak için değeri sözlük olarak belirtin{"strategy": "constant", "fill_value": <desired value>} . Dize seçeneklerini sözlük olarak da belirtebilirsiniz, örneğin {"strategy": "mean"}.Bir sütun için herhangi bir imputation stratejisi sağlanmazsa, AutoML sütun türüne ve içeriğine göre varsayılan bir strateji seçer. Varsayılan olmayan bir imputation yöntemi belirtirseniz, AutoML anlamsal tür algılaması gerçekleştirmez. Varsayılan: {} |
max_trials | int | (İsteğe bağlı) Çalıştırılacak en fazla deneme sayısı. Bu parametre Databricks Runtime 10.5 ML ve altında kullanılabilir, ancak Databricks Runtime 10.3 ML'den başlayarak kullanım dışıdır. Databricks Runtime 11.0 ML ve üzerinde bu parametre desteklenmez. Varsayılan: 20 timeout_minutes=Hiçbiri ise AutoML en fazla deneme sayısını çalıştırır. |
pos_label | Union[int, bool, str] | (Yalnızca sınıflandırma) Pozitif sınıf. Bu, duyarlık ve geri çekme gibi ölçümleri hesaplamak için kullanışlıdır. Yalnızca ikili sınıflandırma sorunları için belirtilmelidir. |
primary_metric | Str | Model performansını değerlendirmek ve derecelendirmek için kullanılan ölçüm. Regresyon için desteklenen ölçümler: "r2" (varsayılan), "mae", "rmse", "mse" Sınıflandırma için desteklenen ölçümler: "f1" (varsayılan), "log_loss", "duyarlık", "doğruluk", "roc_auc" |
time_col | Str | Databricks Runtime 10.1 ML ve üzerinde kullanılabilir. (İsteğe bağlı) Saat sütunu için sütun adı. Sağlandıysa AutoML, eğitim verileri olarak en eski noktaları ve test kümesi olarak en son noktaları kullanarak veri kümesini kronolojik olarak eğitim, doğrulama ve test kümelerine bölmeye çalışır. Kabul edilen sütun türleri zaman damgası ve tamsayıdır. Databricks Runtime 10.2 ML ve üzeri ile dize sütunları da desteklenir. Sütun türü dizeyse, AutoML anlam algılamayı kullanarak bunu zaman damgasına dönüştürmeye çalışır. Dönüştürme başarısız olursa AutoML çalıştırması başarısız olur. |
timeout_minutes | int | (İsteğe bağlı) AutoML denemelerinin tamamlanmasını bekleme süresi üst sınırı. Daha uzun zaman aşımları AutoML'nin daha fazla deneme çalıştırmasına ve modeli daha iyi doğrulukla tanımlamasına olanak sağlar. Varsayılan: 120 dakika En düşük değer: 5 dakika Zaman aşımı en az bir denemenin tamamlanmasına izin veremeyecek kadar kısaysa bir hata bildirilir. |
Tahmin parametreleri
Alan Adı | Type | Açıklama |
---|---|---|
veri kümesi | Str Pandalar. DataFrame pyspark. DataFrame pyspark.sql.DataFrame |
Eğitim özellikleri ve hedefi içeren giriş tablosu adı veya DataFrame. Tablo adı ".." biçiminde olabilir veya "." Unity Kataloğu olmayan tablolar için |
target_col | Str | Hedef etiketin sütun adı. |
time_col | Str | Tahmin için zaman sütununun adı. |
frequency | Str | Tahmin için zaman serisi sıklığı. Bu, olayların gerçekleşmesinin beklendiği dönemdir. Varsayılan ayar "D" veya günlük verilerdir. Verilerinizin farklı bir sıklığı varsa ayarı değiştirdiğinizden emin olun. Olası değerler: "W" (hafta) "D" / "days" / "day" "hours" / "hour" / "hr" / "h" "m" / "minute" / "min" / "minutes" / "T" "S" / "seconds" / "sec" / "second" Aşağıdakiler yalnızca Databricks Runtime 12.0 ML ve üzeri sürümleriyle kullanılabilir: "M" / "ay" / "aylar" "Q" / "quarter" / "quarters" "Y" / "year" / "years" Varsayılan: "D" |
Horizon | int | Geleceğe dönük tahminlerin döndürülmesi gereken dönem sayısı. Birimler zaman serisi sıklığıdır. Varsayılan: 1 |
data_dir | biçim str'idbfs:/<folder-name> |
(İsteğe bağlı) Eğitim veri kümesini depolamak için kullanılan DBFS yolu. Bu yol hem sürücü hem de çalışan düğümleri tarafından görülebilir. Databricks, AutoML'nin eğitim veri kümesini MLflow yapıtı olarak kaydedebilmesi için bu alanı boş bırakmanızı önerir. Özel bir yol belirtilirse, veri kümesi AutoML denemesinin erişim izinlerini devralmaz. |
exclude_ çerçeveleri | Liste[str] | (İsteğe bağlı) AutoML'nin model geliştirirken dikkate almaması gereken algoritma çerçevelerinin listesi. Olası değerler: boş liste veya bir veya daha fazla "kahin", "arima". Varsayılan: [] (tüm çerçeveler dikkate alınır) |
experiment_dir | Str | (İsteğe bağlı) Oluşturulan not defterlerini ve denemeleri kaydetmek için çalışma alanında dizinin yolu. Varsayılan: /Users/<username>/databricks_automl/ |
experiment_name | Str | (İsteğe bağlı) AutoML'nin oluşturduğu MLflow denemesinin adı. Varsayılan: Ad otomatik olarak oluşturulur. |
feature_store_ aramaları | Liste[Dikte] | (İsteğe bağlı) Veri artırma için Özellik Deposu'ndan özellikleri temsil eden sözlüklerin listesi. Her sözlükte geçerli anahtarlar şunlardır: * table_name (str): Gerekli. Özellik tablosunun adı. * lookup_key (liste veya str): Gerekli. Özellik tablosunu içinde geçirilen verilerle birleştirirken anahtar olarak kullanılacak sütun adları dataset parametresini seçin. Sütun adlarının sırası, özellik tablosunun birincil anahtarlarının sırasıyla eşleşmelidir.* timestamp_lookup_key (str): Belirtilen tablo bir zaman serisi özellik tablosuysa gereklidir. Parametrede geçirilen dataset verilerle özellik tablosunda belirli bir noktaya arama gerçekleştirirken kullanılacak sütun adı.Varsayılan: [] |
identity_col | Union[str, list] | (İsteğe bağlı) Çok serili tahmin için zaman serisini tanımlayan sütun... AutoML, bu sütunlara ve tahmin için zaman sütununa göre gruplandırın. |
output_database | Str | (İsteğe bağlı) Sağlandıysa, AutoML en iyi modelin tahminlerini belirtilen veritabanındaki yeni bir tabloya kaydeder. Varsayılan: Tahminler kaydedilmez. |
primary_metric | Str | Model performansını değerlendirmek ve derecelendirmek için kullanılan ölçüm. Desteklenen ölçümler: "smape"(varsayılan) "mse", "rmse", "mae" veya "mdape". |
timeout_minutes | int | (İsteğe bağlı) AutoML denemelerinin tamamlanmasını bekleme süresi üst sınırı. Daha uzun zaman aşımları AutoML'nin daha fazla deneme çalıştırmasına ve modeli daha iyi doğrulukla tanımlamasına olanak sağlar. Varsayılan: 120 dakika En düşük değer: 5 dakika Zaman aşımı en az bir denemenin tamamlanmasına izin veremeyecek kadar kısaysa bir hata bildirilir. |
country_code | Str | Databricks Runtime 12.0 ML ve üzerinde kullanılabilir. Yalnızca Peygamber tahmin modeli tarafından desteklenir. (İsteğe bağlı) Tahmin modelinin hangi ülkenin tatillerini kullanması gerektiğini gösteren iki harfli ülke kodu. Tatilleri yoksaymak için bu parametreyi boş bir dize ("") olarak ayarlayın. Desteklenen ülkeler. Varsayılan: ABD (Birleşik Devletler tatiller). |
Döndürür
AutoMLSummary
Denemelerin her biri için ölçümleri, parametreleri ve diğer ayrıntıları açıklayan bir AutoML çalıştırmasının özet nesnesi. Ayrıca bu nesneyi belirli bir deneme sürümü tarafından eğitilen modeli yüklemek için de kullanırsınız.
Özellik | Türü | Açıklama |
---|---|---|
deneme | mlflow.entities.Experiment | Denemeleri günlüğe kaydetmek için kullanılan MLflow denemesi. |
Deneme | List[TrialInfo] | Çalıştırılan tüm denemeler hakkında bilgi içeren bir liste. |
best_trial | TrialInfo | Birincil ölçüm için en iyi ağırlıklı puanla sonuçlanan deneme sürümü hakkında bilgi. |
metric_distribution | Str | Birincil ölçüm için ağırlıklı puanların tüm denemelerde dağılımı. |
output_table_name | Str | Yalnızca tahminle ve yalnızca output_database sağlandığında kullanılır. modelin tahminlerini içeren output_database tablosunun adı. |
TrialInfo
Her deneme için özet nesnesi.
Özellik | Türü | Açıklama |
---|---|---|
notebook_path | İsteğe bağlı[str] | Çalışma alanında bu deneme sürümü için oluşturulan not defterinin yolu. Sınıflandırma ve regresyon için bu değer yalnızca en iyi deneme için ayarlanırken diğer tüm denemelerde değeri olarak None ayarlanır. Tahmin için bu değer tüm denemelerde mevcuttur |
notebook_url | İsteğe bağlı[str] | Bu deneme sürümü için oluşturulan not defterinin URL'si. Sınıflandırma ve regresyon için bu değer yalnızca en iyi deneme için ayarlanırken diğer tüm denemelerde değeri olarak None ayarlanır. Tahmin için bu değer tüm denemeler için mevcuttur |
artifact_uri | İsteğe bağlı[str] | Oluşturulan not defteri için MLflow yapıt URI'si. |
mlflow_run_id | Str | Bu deneme çalıştırmasıyla ilişkili MLflow çalıştırma kimliği. |
metrics | Dict[str, float] | Bu deneme için MLflow'da günlüğe kaydedilen ölçümler. |
params | Dict[str, str] | Bu deneme için kullanılan MLflow'da günlüğe kaydedilen parametreler. |
model_path | Str | Bu deneme sürümünde eğitilen modelin MLflow yapıtı URL'si. |
model_description | Str | Modelin ve bu modelin eğitimi için kullanılan hiper parametrelerin kısa açıklaması. |
süre | Str | Dakika cinsinden eğitim süresi. |
ön işlemciler | Str | Modeli eğitmeden önce çalıştırılacak ön işlemcilerin açıklaması. |
evaluation_metric_score | kayan noktalı sayı | Doğrulama veri kümesi için değerlendirilen birincil ölçümün puanı. |
Metot | Açıklama |
---|---|
load_model() | MLflow yapıtı olarak günlüğe kaydedilen bu denemede oluşturulan modeli yükleyin. |
Not defterini içeri aktarma
MLflow yapıtı olarak kaydedilmiş bir not defterini içeri aktarmak için Python API'sini databricks.automl.import_notebook
kullanın.
def import_notebook(artifact_uri: str, path: str, overwrite: bool = False) -> ImportNotebookResult:
"""
Import a trial notebook, saved as an MLflow artifact, into the workspace.
:param artifact_uri: The URI of the MLflow artifact that contains the trial notebook.
:param path: The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist.
:param overwrite: Whether to overwrite the notebook if it already exists. It is `False` by default.
:return: ImportNotebookResult contains two fields, `path` and `url`, referring to the imported notebook
"""
Kullanım örneği:
summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)
Modeli kaydetme ve dağıtma
AutoML tarafından eğitilen modelinizi MLflow model kayıt defterindeki tüm kayıtlı modellerde olduğu gibi kaydedebilir ve dağıtabilirsiniz. Bkz . MLflow modellerini günlüğe kaydetme, yükleme, kaydetme ve dağıtma.
'pandas.core.indexes.numeric adlı modül yok
Model Sunma ile AutoML kullanılarak oluşturulmuş bir modele hizmet ederken şu hatayı alabilirsiniz: No module named 'pandas.core.indexes.numeric
.
Bunun nedeni AutoML ile uç nokta ortamı sunan model arasındaki uyumsuz pandas
bir sürümdür. add-pandas-dependency.py betiğini çalıştırarak bu hatayı çözebilirsiniz. Betik, günlüğe kaydedilen modelinizin uygun pandas
bağımlılık sürümünü içerecek şekilde ve conda.yaml
dosyasını düzenlerrequirements.txt
: pandas==1.5.3
.
- Betiği modelinizin günlüğe kaydedildiği MLflow çalıştırmasını içerecek
run_id
şekilde değiştirin. - Modeli MLflow model kayıt defterine yeniden kaydetme.
- MLflow modelinin yeni sürümünü sunma işlemini deneyin.
Not defteri örnekleri
AutoML'yi kullanmaya başlamak için bu not defterlerini gözden geçirin.
Aşağıdaki not defteri AutoML ile sınıflandırmanın nasıl yapılacağını gösterir.
AutoML sınıflandırma örneği not defteri
Aşağıdaki not defteri AutoML ile regresyonun nasıl yapılacağını gösterir.
AutoML regresyon örneği not defteri
Aşağıdaki not defterinde AutoML ile tahmin gerçekleştirme işlemi gösterilmektedir.
AutoML tahmin örneği not defteri
Aşağıdaki not defteri, AutoML ve Özellik Deposu özellik tablolarıyla ML modelini eğitmeyi gösterir.
Özellik Deposu örnek not defteriyle AutoML denemesi
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin