De ce este optimal?
Funcția np.polyfit(), pe care ai folosit-o pentru a obține parametrii regresiei, identifică panta și interceptul optime. Aceasta minimizează suma pătratelor reziduurilor, cunoscută și sub numele de RSS (residual sum of squares). În acest exercițiu, vei reprezenta grafic funcția care este optimizată – RSS – în funcție de parametrul pantei a. Pentru aceasta, fixează interceptul la valoarea găsită în urma optimizării, apoi trasează graficul RSS în funcție de pantă. Unde este minimul?
Acest exercițiu face parte din cursul
Gândire statistică în Python (Partea 2)
Instrucțiuni pentru exercițiu
- Specifică valorile pantei pentru care se calculează RSS. Folosește
np.linspace()pentru a genera200de puncte în intervalul dintre0și0.1. De exemplu, pentru a genera100de puncte în intervalul dintre0și0.5, poți folosinp.linspace()astfel:np.linspace(0, 0.5, 100). - Inițializează un vector,
rss, care va conține valorile RSS, folosindnp.empty_like()și vectorul creat mai sus. Funcțiaempty_like()returnează un vector nou cu aceeași formă și același tip ca vectorul dat (în acest caz,a_vals). - Scrie o buclă
forpentru a calcula RSS în funcție de pantă. Indiciu: RSS este dat denp.sum((y_data - a * x_data - b)**2). Variabilabcalculată în exercițiul anterior este deja disponibilă în spațiul tău de lucru. Aici,fertilityreprezintăy_data, iarilliteracyreprezintăx_data. - Trasează graficul RSS (
rss) în funcție de pantă (a_vals). - Apasă Trimite răspunsul pentru a vedea graficul!
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()