Penyetelan Hyperparameter di Python
Alex Scriven
Data Scientist
Beberapa hyperparameter lebih penting untuk dituning lebih dulu.
Lalu nilai apa yang dicoba untuk hyperparameter?
Mari lihat beberapa kiat utama!
Waspadai pilihan hyperparameter yang saling bertentangan.
LogisticRegression() memiliki opsi solver & penalty yang dapat bertentangan.The 'newton-cg', 'sag' and 'lbfgs' solvers support only l2 penalties.
Beberapa tidak eksplisit tetapi akan diabaikan (dari ElasticNet dengan hyperparameter normalize):
This parameter is ignored when fit_intercept is set to False
Pastikan merujuk dokumentasi Scikit-Learn!
Waspadai penetapan nilai yang “konyol” untuk berbagai algoritme:
Meluangkan waktu untuk mendokumentasikan nilai yang masuk akal itu bermanfaat.
Pada latihan sebelumnya, kita membangun model seperti:
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_10 = KNeighborsClassifier(n_neighbors=10)
knn_20 = KNeighborsClassifier(n_neighbors=20)
Ini cukup tidak efisien. Bisakah kita lebih baik?
Coba for loop untuk mengiterasi opsi:
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)
Kita dapat menyimpan hasilnya dalam DataFrame untuk dilihat:
results_df = pd.DataFrame({'neighbors':neighbors_list, 'accuracy':accuracy_list})
print(results_df)

Mari buat grafik kurva pembelajaran
Kali ini kita uji jauh lebih banyak nilai
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})
Kita dapat memplot DataFrame yang lebih besar:
plt.plot(results_df['neighbors'], results_df['accuracy'])# Tambahkan label dan judul plt.gca().set(xlabel='n_neighbors', ylabel='Accuracy', title='Accuracy for different n_neighbors') plt.show()
Grafik kita:

Fungsi range di Python tidak mendukung langkah desimal.
Trik praktis: gunakan NumPy np.linspace(start, end, num)
num) yang merata dalam interval (start, end) yang Anda tentukan.print(np.linspace(1,2,5))
[1. 1.25 1.5 1.75 2. ]
Penyetelan Hyperparameter di Python