शुरू करेंमुफ़्त में शुरू करें

Scipy के साथ Optimization

न्यूनतम RSS मान खोजने के लिए analytic समाधान का numpy इम्प्लीमेंटेशन लिखना संभव है। लेकिन अधिक जटिल मॉडलों के लिए analytic फ़ॉर्मूले निकालना संभव नहीं होता, इसलिए हम अन्य तरीकों का सहारा लेते हैं.

इस अभ्यास में आप उसी optimization समस्या को हल करने के लिए एक अधिक सामान्य तरीका अपनाएँगे, जिसमें scipy.optimize का उपयोग होगा.

ऐसा करते समय, आपको इस मेथड से अतिरिक्त return मान भी मिलेंगे जो हमें बताते हैं कि "सबसे अच्छा कितना अच्छा है". यहाँ हम तुलना आसान रखने के लिए वही मापे हुए डेटा और पैरामीटर इस्तेमाल करेंगे जो पिछले अभ्यास में थे, ताकि नए scipy तरीके की तुलना की जा सके.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python में Linear Modeling परिचय

पाठ्यक्रम देखें

अभ्यास निर्देश

  • एक फ़ंक्शन model_func(x, a0, a1) परिभाषित करें, जो दिए गए array x के लिए a0 + a1*x लौटाए.
  • a0 और a1 के optimal मान निकालने के लिए scipy का फ़ंक्शन optimize.curve_fit() इस्तेमाल करें.
  • मॉडल पैरामीटर संग्रहीत करने के लिए param_opt को अनपैक करें: a0 = param_opt[0] और a1 = param_opt[1].
  • अपने उत्तर को जाँचने और सत्यापित करने के लिए पहले से परिभाषित फ़ंक्शन compute_rss_and_plot_fit का उपयोग करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# Define a model function needed as input to scipy
def model_func(x, a0, a1):
    return ____ + (____*x)

# Load the measured data you want to model
x_data, y_data  = load_data()

# call curve_fit, passing in the model function and data; then unpack the results
param_opt, param_cov = optimize.curve_fit(____, x_data, y_data)
a0 = param_opt[0]  # a0 is the intercept in y = a0 + a1*x
a1 = param_opt[1]  # a1 is the slope     in y = a0 + a1*x

# test that these parameters result in a model that fits the data
fig, rss = compute_rss_and_plot_fit(____, ____)
कोड संपादित करें और चलाएँ