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
Petunjuk latihan
- Definisikan fungsi
model_func(x, a0, a1)yang, untuk sebuah arrayx, mengembalikana0 + a1*x. - Gunakan fungsi
scipyoptimize.curve_fit()untuk menghitung nilai optimal bagia0dana1. - Buka kemasan
param_optsehingga parameter model disimpan sebagaia0 = param_opt[0]dana1 = param_opt[1]. - Gunakan fungsi yang sudah disediakan
compute_rss_and_plot_fituntuk 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(____, ____)