Aan de slagGa gratis aan de slag

Hoe is het optimaal?

De functie np.polyfit() die je gebruikte om je regressieparameters te krijgen, vindt de optimale helling en intercept. Hij optimaliseert de som van de kwadraten van de residuen, ook wel RSS genoemd (van residual sum of squares). In deze oefening plot je de functie die geoptimaliseerd wordt, de RSS, tegen de hellingsparameter a. Om dit te doen, fixeer je het intercept op de waarde die je in de optimalisatie vond. Plot daarna de RSS tegen de helling. Waar is deze minimaal?

Deze oefening maakt deel uit van de cursus

Statistical Thinking in Python (deel 2)

Cursus bekijken

Oefeninstructies

  • Specificeer de waarden van de helling waarvoor je de RSS wilt berekenen. Gebruik np.linspace() om 200 punten te krijgen in het bereik tussen 0 en 0.1. Bijvoorbeeld, om 100 punten te krijgen in het bereik tussen 0 en 0.5, kun je np.linspace() zo gebruiken: np.linspace(0, 0.5, 100).
  • Initialiseer een array, rss, om de RSS te bevatten met np.empty_like() en de array die je hierboven hebt gemaakt. De functie empty_like() retourneert een nieuwe array met dezelfde vorm en hetzelfde type als een gegeven array (in dit geval a_vals).
  • Schrijf een for-lus om de som van de RSS voor de helling te berekenen. Hint: de RSS wordt gegeven door np.sum((y_data - a * x_data - b)**2). De variabele b die je in de vorige oefening hebt berekend staat al in je namespace. Hier is fertility de y_data en illiteracy de x_data.
  • Plot de RSS (rss) tegen de helling (a_vals).
  • Klik op Antwoord verzenden om de grafiek te zien!

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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()
Code bewerken en uitvoeren