Metoda najmniejszych kwadratów z `numpy`
Poniższe wzory są wynikiem rachunku różniczkowego omówionego we wprowadzeniu. W tym ćwiczeniu przyjmiemy, że obliczenia są poprawne, i zaimplementujemy te wzory w kodzie przy użyciu numpy.
$$ a_{1} = \frac{ covariance(x, y) }{ variance(x) } $$ $$ a_{0} = mean(y) - a_{1} mean(x) $$
To ćwiczenie jest częścią kursu
Wprowadzenie do modelowania liniowego w Pythonie
Instrukcje do ćwiczenia
- Oblicz średnie i odchylenia dla dwóch zmiennych
x, yz wczytanych danych. - Użyj
np.sum(), aby uzupełnić wzory metody najmniejszych kwadratów, i wyznacz optymalne wartościa0oraza1. - Użyj funkcji
model(), aby zbudować wartości modeluy_modelna podstawie optymalnego nachylenia a1 i wyrazu wolnego a0. - Użyj predefiniowanej funkcji
compute_rss_and_plot_fit(), aby wizualnie potwierdzić, że ten optymalny model dopasowuje się do danych.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# prepare the means and deviations of the two variables
x_mean = np.____(x)
y_mean = np.____(y)
x_dev = x - ____
y_dev = y - ____
# Complete least-squares formulae to find the optimal a0, a1
a1 = np.sum(____ * ____) / np.sum( np.square(____) )
a0 = ____ - (a1 * ____)
# Use the those optimal model parameters a0, a1 to build a model
y_model = model(x, ____, ____)
# plot to verify that the resulting y_model best fits the data y
fig, rss = compute_rss_and_plot_fit(a0, a1)