Python में Hyperparameter Tuning
Alex Scriven
Data Scientist
कुछ हाइपरपैरामीटर ट्यूनिंग शुरू करने के लिए दूसरों से ज़्यादा महत्वपूर्ण होते हैं.
लेकिन हाइपरपैरामीटर के लिए किन वैल्यूज़ को आज़माएँ?
आइए कुछ टॉप टिप्स देखें!
टकराने वाले हाइपरपैरामीटर विकल्पों से सावधान रहें.
LogisticRegression() में solver और penalty के कॉन्फ्लिक्टिंग विकल्प.The 'newton-cg', 'sag' and 'lbfgs' solvers support only l2 penalties.
कुछ स्पष्ट नहीं होते, बस 'ignore' कर देते हैं (जैसे ElasticNet में normalize हाइपरपैरामीटर):
This parameter is ignored when fit_intercept is set to False
Scikit Learn की डॉक्यूमेंटेशन ज़रूर देखें!
विभिन्न एल्गोरिदम के लिए 'बेतुकी' वैल्यूज़ सेट करने से सावधान रहें:
हाइपरपैरामीटर के समझदार वैल्यूज़ को डॉक्यूमेंट करना काफ़ी उपयोगी है.
पिछले अभ्यास में, हमने मॉडल ऐसे बनाए:
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_10 = KNeighborsClassifier(n_neighbors=10)
knn_20 = KNeighborsClassifier(n_neighbors=20)
यह काफी अक्षम है. क्या हम बेहतर कर सकते हैं?
विकल्पों पर इटरेट करने के लिए for लूप आज़माएँ:
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)
हम नतीजों को देखने के लिए DataFrame में स्टोर कर सकते हैं:
results_df = pd.DataFrame({'neighbors':neighbors_list, 'accuracy':accuracy_list})
print(results_df)

एक लर्निंग कर्व ग्राफ बनाएँ
इस बार हम और भी ज़्यादा वैल्यूज़ टेस्ट करेंगे
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})
हम बड़े DataFrame को प्लॉट कर सकते हैं:
plt.plot(results_df['neighbors'], results_df['accuracy'])# लेबल और शीर्षक जोड़ें plt.gca().set(xlabel='n_neighbors', ylabel='Accuracy', title='Accuracy for different n_neighbors') plt.show()
हमारा ग्राफ:

Python का range फंक्शन दशमलव स्टेप्स के लिए काम नहीं करता.
एक काम की ट्रिक है NumPy का np.linspace(start, end, num)
start, end) में बराबर दूरी पर num वैल्यूज़ बनाता है.print(np.linspace(1,2,5))
[1. 1.25 1.5 1.75 2. ]
Python में Hyperparameter Tuning