Python'da Hiperparametre Ayarlama
Alex Scriven
Data Scientist
Bu kurs neden?
Kaputun altında neler bulacağınıza şaşırabilirsiniz!
Veri seti kredi kartı temerrütleriyle ilgilidir.
Tayvan'daki bazı tüketicilerin finansal geçmişine ilişkin değişkenler içerir. 30.000 kullanıcı ve 24 öznitelik vardır.
Modelleme hedefimiz krediyi temerrüde düşürüp düşürmedikleridir
Ön işleme yapılmıştır ve bazen bir kavramı göstermek için daha küçük örnekler kullanacağız
Veri seti hakkında ek bilgi için:
https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
Parametre nedir?
Basit bir lojistik regresyon modeli:
log_reg_clf = LogisticRegression() log_reg_clf.fit(X_train, y_train)print(log_reg_clf.coef_)
array([[-2.88651273e-06, -8.23168511e-03, 7.50857018e-04,
3.94375060e-04, 3.79423562e-04, 4.34612046e-04,
4.37561467e-04, 4.12107102e-04, -6.41089138e-06,
-4.39364494e-06, cont... ]])
Katsayıları düzenleyin:
# Orijinal değişken adlarını alın original_variables = list(X_train.columns)# İsimleri ve katsayıları birleştirin zipped_together = list(zip(original_variables, log_reg_clf.coef_[0])) coefs = [list(x) for x in zipped_together]# Sütun etiketleriyle bir DataFrame'e koyun coefs = pd.DataFrame(coefs, columns=["Variable", "Coefficient"])
Şimdi ilk üç katsayıyı sıralayıp yazdırın
coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

Parametreleri bulmak için şunlara ihtiyaç duyarız:
Parametreler 'Parameters' bölümünde değil, 'Attributes' bölümünde yer alır!
Ağaç tabanlı algoritmalar peki?
Random forest'ta katsayı yoktur; düğüm kararları vardır (hangi özellik ve hangi eşikte bölüneceği).
# Basit bir random forest tahminleyici rf_clf = RandomForestClassifier(max_depth=2) rf_clf.fit(X_train, y_train)# Ormandan bir ağacı çekin chosen_tree = rf_clf.estimators_[7]
Basitlik için karar ağacının nihai çıktısını (bir görsel) göstereceğiz. Kullanılan paketleri (graphviz & pydotplus) kendiniz keşfedebilirsiniz.

Soldaki, üstten ikinci düğümün ayrıntılarını çıkarabiliriz:
# Bölündüğü sütunu alın split_column = chosen_tree.tree_.feature[1] split_column_name = X_train.columns[split_column]# Bölündüğü eşiği alın split_value = chosen_tree.tree_.threshold[1]print("This node split on feature {}, at a value of {}" .format(split_column_name, split_value))
"Bu düğüm PAY_0 özelliğinde, 1.5 değerinde bölündü"
Python'da Hiperparametre Ayarlama