Kaggle ve çevrimdışı rekabet yardımcı programı kütüphanesi nyaggle için, özellik mühendisliği ve doğrulamanın iki ana problemini çözmek için (kod ekli)

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

Araç kitaplığı nyaggle

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

nyaggle deney kılavuzu

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)

Diğer API açıklaması

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

Yüz tanıma özellikli maskeler iPhone'un ve netizenlerin kilidini açabilir: gerek kalmadan eğilin
önceki
Topluluk engellendikten sonra neden drone kuryeyi sizin için teslim etmedi?
Sonraki
Google'ın yeni açık kaynaklı metin oluşturma yöntemi LaserTagger, doğrudan seq2seq'in üç ana kusuruna isabet ediyor: düşük verimlilik, yavaş akıl yürütme ve zayıf kontrol
Yaklaşık yüz tanınmış medya, "Yüz Şehir Savaş Salgını" nın hükmetme moduna geçtiğini bildirdi.
"Üç Garanti" eylemi, Shounong Food Group yeniden yüklüyor
İPhone tedariğinin yetersizliği küresel geliri etkileyecek; yüz bilgisi taşıyan maskeler Face ID ile uyumlu olabilir; OPPO temel yapım planı geliştiriyor | Lei Feng Morning Post
Lu Weibing "uğultu" hakkında konuşurken, neden bahsediyordu?
Jiangxi Nanchang İHA Polis Hava Kuvvetleri "üç boyutlu" salgın önleme ve kontrol propagandası başlattı
Yeni koroner pnömoni için ilk potansiyel ilaç olan Favilavir, önemli klinik etkililik ile pazarlama için onaylandı
Karargah muhabirleri, tek kişilik odada enfeksiyonu önlemek için Wuhan karantina noktasını ziyaret etti
Verimli makine öğrenimi araştırmacıları bu 6 alışkanlığa sahip olmalıdır
Birçok ülkede ana akım medyanın bir başka başkanı, Çin'in salgınla mücadele etmesi için merkeze yazdı.
Sichuan'ın özelleştirilmiş göçmen işçiler için ilk dönüş yolculuğu özel treni açıldı
Salgın Sırasında Kantinlerde Güvenli Yemek İçin Dokuz İlke
To Top