Leifeng.com AI geliştiricisinin notu: Çoğu makine öğrenimi yarışmasında, özel teşhis projesinin kalitesi genellikle tüm çalışmanın puanını ve sıralamasını belirler ki bu da yarışmacıların çok önemli bir parçasıdır. GitHub'da yazar Nomi (bilgisayar vizyonuna ve gömülü teknolojiye odaklandı ve tiny-dnn'nin orijinal yazarı) bizi, kaggle veri bilimi için pratik bir araç kitaplığı olan ve geliştiriciler tarafından özellik mühendisliği için kullanılabilecek çevrimdışı yarışmalar olan nyaggle ile tanıştırdı Ve doğrulama.
Yazar profili Kaynak: Nomi
Makine öğreniminde ve örüntü tanımada, özellik mühendisliğinin kalitesi tüm modelin tahmini performansını etkileyecektir. Karakteristik, gözlemlenen fenomende bağımsız ve ölçülebilir bir özelliktir. Bilgilendirici, farklılaştırılmış ve bağımsız özelliklerin seçilmesi, örüntü tanıma, sınıflandırma ve regresyon problemlerinde önemli bir adımdır ve geliştiricilerin algoritmalar ve modeller tarafından kullanılmak üzere ham verilerden özelliklerin çıkarılmasını en üst düzeye çıkarmasına yardımcı olabilir.
Veri Bilimi Zihin Haritası Kaynak: İnternet
Ve nyaggle, Kaggle ve çevrimdışı yarışmalara özgü pratik bir araç kitaplığıdır. Esas olarak dört kısımda hareket eder: özellik mühendisliği, model doğrulama, model deneme ve model birleştirme.Özellik mühendisliği ve model doğrulamada güçlü bir performansa sahiptir. .
Bunların arasında, özellik mühendisliği açısından nyaggle, K özellikli hedef kodlamasını ve BERT cümle vektörleştirmesini içerir. Hedef kodlama, hedef değişkenin ortalama kodlama kategorik değişkenlerini kullanır, eğitim setindeki her grup için hedef değişkenin istatistiklerini hesaplar ve ardından grup ile hedef arasındaki ilişkiyi yakalamak için doğrulama seti ile test setini birleştirir. BERT cümle vektörleştirme, kelimelerin ve cümlelerin üç boyutlu bilgilerini çıkarmak için Bert modelinin girdisini vektörleştirmektir.
BERT kelimelerinin ve cümlelerinin vektörleştirme örneği Kaynak: İnternet
nyaggle GitHub adresi:
https://github.com/nyanp/nyaggle
API ayrıntıları: Model deneyinin çeşitli işlevlerini uygulayan nyaggle.experiment sınıfı
En basit Kaggle deney kaydedicisi olan bu modül, Kaggle deneylerini kaydetmek için en basit fonksiyon değişken kaydını sağlar. Geliştiriciler, log_numpy ve log_dataframe aracılığıyla dizine numpy dizileri ve pandalar veri çerçeveleri ekleyebilir:
classnyaggle.experiment.Experiment (logging_directory, overwrite = False, custom_logger = None, with_mlflow = False, mlflow_run_id = None, logging_mode = 'w')
Skor tablosu puanını mevcut deney dizinine kaydedin:
nyaggle.experiment.add_leaderboard_score (logging_directory, puan)
Hesaplama modeli füzyon verileri:
nyaggle.experiment.average_results (source_files, output_filename, weight = None, input_format = 'csv', sample_submission_filename = Yok)
Hiperparametrelerde lightgbm parametrelerini aramak için optuna kullanın:
nyaggle.experiment.find_best_lgbm_parameter (base_param, X, y, cv = None, groups = None, time_budget = None, type_of_target = 'auto')
Göstergeleri çapraz doğrulama yoluyla değerlendirin ve sonuçları (günlükler, tahminler, test tahminleri, özellik önem haritaları ve gönderim dosyaları) belirtilen dizinde saklayın. Tahmin edicilerden biri olan LGBM sınıflandırıcısı, LGBM regresörü, CatBoost sınıflandırıcısı, CatBoost regresörü işlemde kullanılacaktır. Spesifik tahminci, gerçek duruma göre otomatik olarak type_of_target (y) ve gbdt_type ile çağrılır:
nyaggle.experiment.run_experiment (model_params, X_train, y, X_test = None, logging_directory = 'output / {time}', overwrite = False, eval_func = Yok, algoritma_type = 'lgbm', fit_params = Yok, cv = Yok, gruplar = None, categorical_feature = None, sample_submission = None, submission_filename = None, type_of_target = 'auto', feature_list = None, feature_directory = None, with_auto_hpo = False, with_auto_prep = False, with_mlflow = False)
Deneysel ayrıntılı kod
Tipik bir tablo veri yarışmasında, geliştiriciler değerlendirmeyi çapraz doğrulama yoluyla tekrarlayabilir ve deneyi izlemek için parametreleri ve sonuçları kaydedebilir.
Bunların arasında, run_experiment, bu tür çapraz doğrulama deneyleri için kullanılan yüksek seviyeli API'dir. Belirtilen dizinde parametreler, göstergeler, anormal tahminler, test tahminleri, işlevsel önem ve Submitting.csv çıktıları verir.
MLflow izleme ile birlikte kullanılabilir. LightGBM'yi bir model olarak kullanırsanız, kod aşağıda gösterildiği gibi çok basit olacaktır:
pandaları pdfrom nyaggle.experiment olarak içe aktarın run_experimentfrom nyaggle.experiment içe aktarın make_classification_df
INPUT_DIR = '.. / input'target_column =' hedef '
X_train = pd.read_csv (f '{INPUT_DIR} /train.csv') X_test = pd.read_csv (f '{INPUT_DIR} /test.csv') sample_df = pd.read_csv (f '{INPUT_DIR} /sample_submission.csv' ) # İSTEĞE BAĞLI
y = X_trainX_train = X_train.drop (hedef_sütun, eksen = 1)
lightgbm_params = {
"max_depth": 8}
sonuç = run_experiment (lightgbm_params,
X_train,
y,
X_test,
sample_submission = sample_df)
Varsayılan doğrulama stratejisinin 5 özellik içeren bilgisayar görüşü olduğunu belirtmek gerekir. Geliştiriciler bu davranışı cv parametresini geçerek değiştirebilir (API referansına bakın, https://nyaggle.readthedocs.io/en/latest/ source / nyaggle.html #).
Daha sonra, run_experiment API çapraz doğrulama gerçekleştirdikten sonra, yapılar günlük dizininde saklanacaktır. Çıktı dosyası şu şekilde saklanır:
çıktı
20200130123456 # yyyymmssHHMMSS
params.txt # Parametreler
metrics.txt # Metrikler (tek kat ve genel CV puanı)
oof_prediction.npy # Kat dışı tahmini
test_prediction.npy # Test tahmini
20200130123456.csv # Gönderim csv dosyası
importances.png # Özellik önem grafiği
log.txt # Günlük dosyası
modeller # Her kat için eğitilmiş modeller
kat1
kat2
kat3
kat4
kat5
XGBoost, CatBoost veya diğer sklearn tahmin edicilerini kullanmak istiyorsanız, kodun başında algoritma türünü belirtmeniz gerekir ve parametreler sklearn API yapıcısına (LGBMClassifier gibi) aktarılır.
# CatBoostcatboost_params = {
'eval_metric': 'Logloss',
'loss_function': 'Logloss',
'derinlik': 8,
'task_type': 'GPU'} sonuç = run_experiment (catboost_params,
X_train,
y,
X_test,
algoritma_type = 'kedi')
# XGBoostxgboost_params = {
'amaç': 'reg: doğrusal',
'max_depth': 8} sonuç = run_experiment (xgboost_params,
X_train,
y,
X_test,
algoritma_type = 'xgb')
# sklearn estimatorfrom sklearn.linear_model import Ridgerigde_params = {
'alfa': 1.0} sonuç = run_experiment (rigde_params,
X_train,
y,
X_test,
algoritma_type = Ridge)
GUI kontrol panelinin denemeyi yönetmesini istiyorsanız, geliştiriciler sadece_mlfow = True (mlflow'un önceden yüklenmesi gerekir) ayarlayarak mlflow ile run_experiment'i kullanabilir. Ardından, yürütme betiğiyle aynı dizinde çalıştırın.
sonuç = run_experiment (parametreler,
X_train,
y,
X_test,
with_mlflow = True)
Ardından, çalıştırılan komut dosyasıyla aynı dizinde çalıştırın ve ilgili sonuçlar (CV puanı ve parametreleri içeren deney listesi) http: // localhost: 5000 sayfasında görüntülenebilir.
Mlflow sonuç sayfası örneği
Not: Günlüğe kaydetme davranışını özelleştirmek istiyorsanız, mlflow çalıştırma bağlamında run_experiment'i çağırabilirsiniz; çalışıyorsa, run_experiment yeni bir çalıştırma oluşturmak yerine o anda çalışan çalıştırmayı kullanır.
mlflow.set_tracking_uri ('gs: // ok-i-kullanmak-istiyorum-gcs')
mlflow.start_run (run_name = 'favori-çalıştırma-adınız') ile:
mlflow.log_param ('günlüğe kaydetmek istediğiniz bir şey', 42)
sonuç = run_experiment (parametreler,
X_train,
y,
X_test,
with_mlflow = True)
nyaggle.feature sınıf yönetimi ve özellik biçiminde bir dizi işlevi çalıştır
nyaggle.feature.category_encoder
Bunların arasında Kfold sarmalayıcısı sklearn'a benzer bir arabirim için kullanılır; Bu tür sarmalayıcının TransformerMixIn'i fit / transform / fit_transform yöntemlerine sahip nesnelere sahiptir ve K özellik yöntemlerinde çağrılır. Farklı sınıflandırma özellikleri için hedef kodlamanın çalışma modu aşağıdaki gibidir:
Sınıflandırma hedefi için, özellik, belirli bir sınıflandırma değerinin hedef arka olasılığı ile hedefin tüm eğitim verileri üzerindeki önceki olasılığının bir karışımı ile değiştirilir.
Sürekli hedefler için özellikleri, belirli bir sınıflandırma değeri verilen hedef beklenen değer ve tüm eğitim verilerinde hedefin beklenen değerinin bir karışımıyla değiştirin.
Sınıf
nyaggle.feature.category_encoder.KFoldEncoderWrapper (base_transformer, cv = None, return_same_type = True, groups = None)
nyaggle.feature.nlp
Bunlar arasında, Cümle Vectorizer BERT önceden eğitilmiş modeli kullanır ve değişken uzunluklu İngilizce / Japonca cümlelerden sabit uzunlukta özellik vektörlerini çıkarmak için BERT kullanır.
Sınıf
nyaggle.feature.nlp.BertSentenceVectorizer (lang = 'en', n_components = Yok, text_columns = Yok, pooling_strategy = 'azaltın_mean', use_cuda = False, tokenizer = Yok, model = Yok, return_same_type = True, column_format = '{col} _ {idx} ')
nyaggle.feature_store class-sklearn uyumlu özellik oluşturucu
Sarmalayıcı, pd.DataFrame'i bir bellek çağrısıyla döndürecek ve veri çerçevesini feature_store.save_feature ile kaydedecek bir işlevi sarar:
nyaggle.feature_store.cached_feature (özellik_adı, dizin = '. / özellikler /', ignore_columns = Yok)
Özellikleri bir panda veri çerçevesi olarak yükleyin:
nyaggle.feature_store.load_feature (özellik_adı, dizin = '. / özellikler /', ignore_columns = Yok)
Özelliği yükleyin ve bağlı veri çerçevesini geri gönderin:
nyaggle.feature_store.load_features (base_df, feature_names, directory = '. / features /', ignore_columns = Yok, create_directory = True, rename_duplicate = True)
Pandalar veri çerçevesini özellik formatı olarak kaydedin:
nyaggle.feature_store.save_feature (df, özellik_adı, dizin = '. / özellikler /', with_csv_dump = False, create_directory = True, reference_target_variable = None, overwrite = True)
nyaggle.validation sınıfı-hasım doğrulaması, doğrulama ayırıcı sklearn ile uyumludur
Kayan pencere zaman serisi çapraz doğrulayıcı aynı zamanda bir zaman serisi çapraz doğrulayıcıdır. Doğrulayıcı, değişken aralıklı zaman serisi verilerini bölümlere ayırmak için kayan bir pencereye dayalı bir test indeksi sağlar. Bu sınıf sklearn'ın BaseCrossValidator (KFold, GroupKFold, vb. Temel sınıfı) ile uyumludur:
classnyaggle.validation.SlidingWindowSplit (kaynak, train_from, train_to, test_from, test_to, n_windows, stride)
İlk n özelliği yinelemeli olarak döndürmek için temel doğrulayıcıyı paketleyen temel doğrulayıcının ilk N özelliğini döndür:
classnyaggle.validation.Take (n, base_validator)
Zaman serisi çapraz doğrulayıcı, değişken aralıklı zaman serisi verilerini bölmek için eğitim / test indeksi sağlar. Bu sınıf, zaman serisi doğrulama stratejileri için düşük seviyeli bir API sağlar. Bu sınıf sklearn'ın BaseCrossValidator (KFold, GroupKFold, vb. Temel sınıfı) ile uyumludur:
classnyaggle.validation.TimeSeriesSplit (kaynak, zamanlar = Yok)
X_train ve X_test arasında rakip doğrulama gerçekleştirin:
nyaggle.validation.adversarial_validate (X_train, X_test, important_type = 'gain', estimator = Yok, cat_cols = Yok, cv = Yok)
Göstergeler çapraz doğrulama yoluyla değerlendirilir; aynı zamanda anormal tahminleri ve test tahminlerini de kaydeder:
nyaggle.validation.cross_validate (tahminci, X_train, y, X_test = Yok, cv = Yok, gruplar = Yok, tahmin_proba = Yanlış, eval_func = Yok, günlükçü = Yok, on_each_fold = Yok, fit_params = Yok, önem_türü = 'kazanç', Early_stopping = True, type_of_target = 'auto')
nyaggle.util sınıfı
Özelliğin önemini çizin ve görüntüye yazın:
nyaggle.util.plot_importance (önem, yol = Yok, top_n = 100, figsize = Yok, başlık = Yok)
nyaggle.hyper_parameters sınıf-önceki çözümlerden Hypara ile ilgili parametreleri seçin
Parametre adına göre hiperparametreleri alın:
nyaggle.hyper_parameters.get_hyperparam_byname (name, gbdt_type = 'lgbm', with_metadata = False)
Tüm hiperparametreleri listeleyin:
nyaggle.hyper_parameters.list_hyperparams (gbdt_type = 'lgbm', with_metadata = False)
Leifeng.com AI Geliştiricisi Leifeng.com