रैंडम फॉरेस्ट के हाइपरपैरामीटर ट्यून करें
हर मॉडल की तरह, हम हाइपरपैरामीटर ट्यून करके परफॉर्मेंस को बेहतर बनाना चाहते हैं। रैंडम फॉरेस्ट्स के कई हाइपरपैरामीटर होते हैं, लेकिन सबसे अहम अक्सर हर स्प्लिट पर सैंपल किए जाने वाले फीचर्स की संख्या होती है, यानी sklearn लाइब्रेरी के RandomForestRegressor में max_features। जिन मॉडलों में रैंडमनेस बिल्ट-इन होती है, जैसे रैंडम फॉरेस्ट, उनमें हम random_state भी सेट करना चाहते हैं। इससे हमारे परिणाम दोहराए जा सकते हैं।
आम तौर पर हम sklearn की GridSearchCV() मेथड से हाइपरपैरामीटर सर्च कर सकते हैं, लेकिन फाइनेंशियल टाइम सीरीज़ के साथ हम डेटा मिक्सिंग के कारण क्रॉस-वैलिडेशन नहीं करना चाहते। हम पुराने डेटा पर मॉडल फिट करना और नए डेटा पर मूल्यांकन करना चाहते हैं। इसलिए हम sklearn के ParameterGrid का उपयोग करके सर्च के लिए हाइपरपैरामीटर के कॉम्बिनेशन बनाएँगे।
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Finance के लिए Machine Learning
अभ्यास निर्देश
gridडिक्शनरी मेंn_estimatorsहाइपरपैरामीटर को एक मान (200) वाली लिस्ट के रूप में सेट करें।gridडिक्शनरी मेंmax_featuresहाइपरपैरामीटर को 4 और 8 वाली लिस्ट के रूप में सेट करें।- लूप में प्रत्येक हाइपरपैरामीटर कॉम्बिनेशन
gके साथ रैंडम फॉरेस्ट रिग्रेसर मॉडल (rfr, आपके लिए पहले से बनाया गया) कोtrain_featuresऔरtrain_targetsपर फिट करें। test_featuresपरrfr.score()का उपयोग करके R\(^2\) गणना करें और परिणाम कोtest_scoresलिस्ट में जोड़ें।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
from sklearn.model_selection import ParameterGrid
# Create a dictionary of hyperparameters to search
grid = {____, 'max_depth': [3], 'max_features': ____, 'random_state': [42]}
test_scores = []
# Loop through the parameter grid, set the hyperparameters, and save the scores
for g in ParameterGrid(grid):
rfr.set_params(**g) # ** is "unpacking" the dictionary
rfr.fit(____, ____)
test_scores.append(rfr.score(____, ____))
# Find best hyperparameters from the test score and print
best_idx = np.argmax(test_scores)
print(test_scores[best_idx], ParameterGrid(grid)[best_idx])