Python'da Hiperparametre Ayarlama
Alex Scriven
Data Scientist
Bazı hiperparametreler ayarlamaya başlamak için diğerlerinden daha önemlidir.
Peki hiperparametreler için hangi değerler denenmeli?
Bazı önemli ipuçlarına bakalım!
Çakışan hiperparametre seçimlerine dikkat edin.
LogisticRegression() içinde çatışan solver ve penalty seçenekleri.The 'newton-cg', 'sag' and 'lbfgs' solvers support only l2 penalties.
Bazıları açık değildir ve sadece 'yok sayar' (normalize hiperparametresiyle ElasticNet):
This parameter is ignored when fit_intercept is set to False
Lütfen Scikit-Learn belgelerine başvurun!
Farklı algoritmalar için 'mantıksız' değerler belirlememeye dikkat edin:
Hiperparametreler için makul değerleri belgelemek değerlidir.
Önceki alıştırmada modelleri şöyle kurduk:
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_10 = KNeighborsClassifier(n_neighbors=10)
knn_20 = KNeighborsClassifier(n_neighbors=20)
Bu oldukça verimsiz. Daha iyisini yapabilir miyiz?
Seçenekler arasında dönmek için bir for döngüsü deneyin:
neighbors_list = [3,5,10,20,50,75]accuracy_list = []for test_number in neighbors_list: model = KNeighborsClassifier(n_neighbors=test_number) predictions = model.fit(X_train, y_train).predict(X_test)accuracy = accuracy_score(y_test, predictions) accuracy_list.append(accuracy)
Sonuçları görüntülemek için bir DataFrame'de saklayabiliriz:
results_df = pd.DataFrame({'neighbors':neighbors_list, 'accuracy':accuracy_list})
print(results_df)

Bir öğrenme eğrisi grafiği oluşturalım
Bu kez çok daha fazla değer deneyeceğiz
neighbors_list = list(range(5,500, 5))accuracy_list = [] for test_number in neighbors_list: model = KNeighborsClassifier(n_neighbors=test_number) predictions = model.fit(X_train, y_train).predict(X_test) accuracy = accuracy_score(y_test, predictions) accuracy_list.append(accuracy) results_df = pd.DataFrame({'neighbors':neighbors_list, 'accuracy':accuracy_list})
Daha büyük DataFrame'i görselleştirebiliriz:
plt.plot(results_df['neighbors'], results_df['accuracy'])# Etiketleri ve başlığı ekleyin plt.gca().set(xlabel='n_neighbors', ylabel='Accuracy', title='Accuracy for different n_neighbors') plt.show()
Grafiğimiz:

Python'un range fonksiyonu ondalık adımlar için çalışmaz.
Kullanışlı bir yöntem NumPy'nin np.linspace(start, end, num) fonksiyonudur
start, end) eşit aralıklı num adet değer üretir.print(np.linspace(1,2,5))
[1. 1.25 1.5 1.75 2. ]
Python'da Hiperparametre Ayarlama