Začněte nyníZačněte zdarma

Optimalizace pomocí Scipy

Analytické řešení pro nalezení minimální hodnoty RSS lze implementovat pomocí numpy. U složitějších modelů ale analytické vzorce většinou neexistují, a proto sáhneme po jiných přístupech.

V tomto cvičení použiješ scipy.optimize jako obecnější metodu ke stejnému optimalizačnímu problému.

Uvidíš také další návratové hodnoty, které ti řeknou, „jak dobré je nejlepší řešení". Pro snadné porovnání s novým přístupem scipy použijeme stejná naměřená data a parametry jako v předchozím cvičení.

Toto cvičení je součástí kurzu

Úvod do lineárního modelování v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Definuj funkci model_func(x, a0, a1), která pro zadané pole x vrátí a0 + a1*x.
  • Pomocí funkce optimize.curve_fit() z knihovny scipy vypočítej optimální hodnoty a0 a a1.
  • Rozbal param_opt tak, aby byly parametry modelu uloženy jako a0 = param_opt[0] a a1 = param_opt[1].
  • Pomocí předdefinované funkce compute_rss_and_plot_fit ověř správnost svého řešení.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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(____, ____)
Upravit a spustit kód