IniziaInizia gratis

Quanto è ottimale?

La funzione np.polyfit() che hai usato per ottenere i parametri della regressione trova la pendenza e l'intercetta ottimali. Ottimizza la somma dei quadrati dei residui, anche detta RSS (Residual Sum of Squares). In questo esercizio traccerai la funzione che viene ottimizzata, l'RSS, in funzione del parametro di pendenza a. Per farlo, fissa l'intercetta al valore trovato nell'ottimizzazione. Poi, rappresenta l'RSS rispetto alla pendenza. Dove è minima?

Questo esercizio fa parte del corso

Pensiero statistico in Python (Parte 2)

Visualizza il corso

Istruzioni dell'esercizio

  • Specifica i valori della pendenza per calcolare l'RSS. Usa np.linspace() per ottenere 200 punti nell'intervallo tra 0 e 0.1. Per esempio, per ottenere 100 punti nell'intervallo tra 0 e 0.5, potresti usare np.linspace() così: np.linspace(0, 0.5, 100).
  • Inizializza un array, rss, per contenere l'RSS usando np.empty_like() e l'array creato sopra. La funzione empty_like() restituisce un nuovo array con la stessa forma e lo stesso tipo di un array dato (in questo caso, a_vals).
  • Scrivi un ciclo for per calcolare la somma dell'RSS in funzione della pendenza. Suggerimento: l'RSS è dato da np.sum((y_data - a * x_data - b)**2). La variabile b che hai calcolato nell'esercizio precedente è già nel tuo namespace. Qui, fertility è lo y_data e illiteracy lo x_data.
  • Traccia l'RSS (rss) rispetto alla pendenza (a_vals).
  • Premi Invia risposta per vedere il grafico!

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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()
Modifica ed esegui il codice