MulaiMulai sekarang secara gratis

Optimisasi dengan Scipy

Dimungkinkan untuk menulis implementasi numpy dari solusi analisitik guna menemukan nilai RSS minimal. Namun untuk model yang lebih kompleks, mencari rumus analitik tidak memungkinkan, sehingga kita beralih ke metode lain.

Dalam latihan ini Anda akan menggunakan scipy.optimize untuk menerapkan pendekatan yang lebih umum guna menyelesaikan masalah optimisasi yang sama.

Dengan demikian, Anda akan melihat nilai keluaran tambahan dari metode tersebut yang memberi tahu kita “seberapa baik yang terbaik”. Di sini kita akan menggunakan data terukur dan parameter yang sama seperti pada latihan sebelumnya agar mudah membandingkan pendekatan scipy yang baru.

Latihan ini adalah bagian dari kursus

Pengantar Pemodelan Linear di Python

Lihat Kursus

Petunjuk latihan

  • Definisikan fungsi model_func(x, a0, a1) yang, untuk sebuah array x, mengembalikan a0 + a1*x.
  • Gunakan fungsi scipy optimize.curve_fit() untuk menghitung nilai optimal bagi a0 dan a1.
  • Buka kemasan param_opt sehingga parameter model disimpan sebagai a0 = param_opt[0] dan a1 = param_opt[1].
  • Gunakan fungsi yang sudah disediakan compute_rss_and_plot_fit untuk menguji dan memverifikasi jawaban Anda.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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(____, ____)
Edit dan Jalankan Kode