यह सर्वोत्तम कैसे है?
जिस फंक्शन np.polyfit() का उपयोग आपने regression parameters निकालने के लिए किया, वह optimal slope और intercept ढूँढता है। यह अवशेषों के वर्गों के योग, यानी RSS (residual sum of squares), को minimize करता है। इस अभ्यास में, आप उसी फंक्शन, यानी RSS, को slope पैरामीटर a के विरुद्ध प्लॉट करेंगे जिसे optimize किया जा रहा है। ऐसा करने के लिए, intercept को उस मान पर फिक्स करें जो आपने optimization में पाया था। फिर RSS को slope के विरुद्ध प्लॉट करें। इसका न्यूनतम कहाँ आता है?
यह अभ्यास पाठ्यक्रम का हिस्सा है
Statistical Thinking in Python (Part 2)
अभ्यास निर्देश
- RSS compute करने के लिए slope के मान निर्दिष्ट करें।
0और0.1की रेंज में200पॉइंट्स पाने के लिएnp.linspace()का उपयोग करें। उदाहरण के लिए,0और0.5की रेंज में100पॉइंट्स पाने के लिए आपnp.linspace()ऐसे लिख सकते हैं:np.linspace(0, 0.5, 100). - एक array
rssinitialize करें जो RSS को रखेगा, इसके लिएnp.empty_like()का उपयोग करें और ऊपर बनाए गए array को इसमें पास करें।empty_like()फंक्शन किसी दिए गए array (इस मामले मेंa_vals) के समान shape और type वाला नया array लौटाता है। - एक
forलूप लिखिए जो दिए गए slope के लिए RSS का sum compute करे। संकेत: RSS यह है:np.sum((y_data - a * x_data - b)**2)। पिछले अभ्यास में compute किया गया variablebपहले से आपके namespace में मौजूद है। यहाँfertilityy_dataहै औरilliteracyx_data। - RSS (
rss) को slope (a_vals) के विरुद्ध प्लॉट करें। - प्लॉट देखने के लिए उत्तर सबमिट करें!
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Specify slopes to consider: a_vals
a_vals = ____
# Initialize sum of square of residuals: rss
rss = ____
# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
rss[i] = ____((____ - a*____ - b)**2)
# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')
plt.show()