BaşlayınÜcretsiz başlayın

Scipy ile Optimizasyon

Minimal RSS değerini bulmak için analitik çözümün bir numpy uygulamasını yazmak mümkündür. Ancak daha karmaşık modellerde analitik formüller bulmak mümkün değildir; bu yüzden başka yöntemlere başvururuz.

Bu egzersizde aynı optimizasyon sorununu çözmek için daha genel bir yaklaşımı kullanmak üzere scipy.optimize modülünden yararlanacaksın.

Bunu yaparken, yöntemin döndürdüğü ek değerlerin bize “en iyinin ne kadar iyi” olduğunu nasıl söylediğini de göreceksin. Burada, yeni scipy yaklaşımını önceki egzersizde kullanılan ölçüm verileri ve parametrelerle karşılaştırmayı kolaylaştırmak için aynı verileri ve parametreleri kullanacağız.

Bu egzersiz, kursun bir parçasıdır

Python ile Doğrusal Modellemenin Temelleri

Kursa Göz Atın

Egzersiz talimatları

  • Verilen bir x dizisi için a0 + a1*x döndüren model_func(x, a0, a1) adlı bir fonksiyon tanımla.
  • a0 ve a1 için en iyi değerleri hesaplamak üzere scipy fonksiyonu optimize.curve_fit() kullan.
  • Model parametrelerini a0 = param_opt[0] ve a1 = param_opt[1] olacak şekilde saklamak için param_opt değerlerini aç (unpack) et.
  • Yanıtını test edip doğrulamak için önceden tanımlı compute_rss_and_plot_fit fonksiyonunu kullan.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# 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(____, ____)
Kodu Düzenle ve Çalıştır