Na czym polega optymalność?
Funkcja np.polyfit(), której użyłeś do wyznaczenia parametrów regresji, wyznacza optymalne nachylenie i wyraz wolny. Optymalizuje ona sumę kwadratów reszt, czyli RSS (ang. residual sum of squares). W tym ćwiczeniu wykreślisz funkcję podlegającą optymalizacji – RSS – w zależności od parametru nachylenia a. W tym celu ustal wyraz wolny na wartość uzyskaną podczas optymalizacji, a następnie narysuj wykres RSS w funkcji nachylenia. Gdzie jest ono minimalne?
To ćwiczenie jest częścią kursu
Myślenie statystyczne w Pythonie (część 2)
Instrukcje do ćwiczenia
- Określ wartości nachylenia, dla których obliczysz RSS. Użyj
np.linspace(), aby uzyskać200punktów w przedziale od0do0.1. Na przykład, aby uzyskać100punktów w przedziale od0do0.5, możesz użyćnp.linspace()w następujący sposób:np.linspace(0, 0.5, 100). - Zainicjuj tablicę
rssdo przechowywania wartości RSS, używającnp.empty_like()i tablicy utworzonej powyżej. Funkcjaempty_like()zwraca nową tablicę o tym samym kształcie i typie co podana tablica (w tym przypadkua_vals). - Napisz pętlę
for, która oblicza sumę RSS dla nachylenia. Podpowiedź: RSS wyraża się wzoremnp.sum((y_data - a * x_data - b)**2). Zmiennabobliczona w poprzednim ćwiczeniu jest już dostępna w twoim przestrzeni nazw. Tutajfertilitytoy_data, ailliteracytox_data. - Wykreśl RSS (
rss) w zależności od nachylenia (a_vals). - Kliknij Prześlij odpowiedź, aby zobaczyć wykres!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Specify slopes to consider: a_vals
a_vals = ____
# Initialize sum of square of residuals: rss
rss = ____
# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
rss[i] = ____((____ - a*____ - b)**2)
# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')
plt.show()