Kom igångKom igång gratis

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)

Visa kurs

Övningsinstruktioner

  • Ange de lutningsvärden som du vill beräkna RSS för. Använd np.linspace() för att få 200 punkter i intervallet mellan 0 och 0.1. För att till exempel få 100 punkter i intervallet mellan 0 och 0.5 kan du använda np.linspace() så här: np.linspace(0, 0.5, 100).
  • Initialisera en array, rss, för att lagra RSS-värdena med hjälp av np.empty_like() och arrayen du skapade ovan. Funktionen empty_like() returnerar en ny array med samma form och typ som den angivna arrayen (i det här fallet a_vals).
  • Skriv en for-slinga för att beräkna RSS-summan för varje lutningsvärde. Tips: RSS ges av np.sum((y_data - a * x_data - b)**2). Variabeln b som du beräknade i den förra övningen finns redan i ditt namnområde. Här är fertility y_data och illiteracy x_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()
Redigera och kör kod