Vad gör den optimal?
Funktionen np.polyfit() som du använde för att beräkna dina regressionsparametrar hittar den optimala lutningen och intercept-värdet. Den minimerar summan av residualernas kvadrater, även kallad RSS (residual sum of squares). I den här övningen ska du plotta den funktion som optimeras – RSS – mot lutningsparametern a. För att göra det håller du intercept-värdet fast vid det du hittade vid optimeringen. Plotta sedan RSS mot lutningen. Var når den sitt minimum?
Den här övningen är en del av kursen
Statistiskt tänkande i Python (del 2)
Övningsinstruktioner
- Ange de lutningsvärden som du vill beräkna RSS för. Använd
np.linspace()för att få200punkter i intervallet mellan0och0.1. För att till exempel få100punkter i intervallet mellan0och0.5kan du användanp.linspace()så här:np.linspace(0, 0.5, 100). - Initialisera en array,
rss, för att lagra RSS-värdena med hjälp avnp.empty_like()och arrayen du skapade ovan. Funktionenempty_like()returnerar en ny array med samma form och typ som den angivna arrayen (i det här falleta_vals). - Skriv en
for-slinga för att beräkna RSS-summan för varje lutningsvärde. Tips: RSS ges avnp.sum((y_data - a * x_data - b)**2). Variabelnbsom du beräknade i den förra övningen finns redan i ditt namnområde. Här ärfertilityy_dataochilliteracyx_data. - Plotta RSS (
rss) mot lutning (a_vals). - Klicka på Skicka in svar för att se grafen!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()