CommencerCommencer gratuitement

En quoi est-ce optimal ?

La fonction np.polyfit() que vous avez utilisée pour obtenir vos paramètres de régression trouve la pente et l’ordonnée à l’origine optimales. Elle optimise la somme des carrés des résidus, également appelée RSS (pour residual sum of squares). Dans cet exercice, vous allez tracer la fonction qui est optimisée, le RSS, en fonction du paramètre de pente a. Pour ce faire, fixez l’ordonnée à l’origine à la valeur trouvée lors de l’optimisation. Ensuite, tracez le RSS en fonction de la pente. Où est-il minimal ?

Cet exercice fait partie du cours

Réflexion statistique en Python (Partie 2)

Afficher le cours

Instructions

  • Indiquez les valeurs de la pente pour calculer le RSS. Utilisez np.linspace() pour obtenir 200 points dans l’intervalle entre 0 et 0.1. Par exemple, pour obtenir 100 points dans l’intervalle entre 0 et 0.5, vous pourriez utiliser np.linspace() ainsi : np.linspace(0, 0.5, 100).
  • Initialisez un tableau, rss, pour contenir le RSS en utilisant np.empty_like() et le tableau que vous avez créé ci-dessus. La fonction empty_like() renvoie un nouveau tableau ayant la même forme et le même type qu’un tableau donné (dans ce cas, a_vals).
  • Écrivez une boucle for pour calculer la somme du RSS pour la pente. Indice : le RSS est donné par np.sum((y_data - a * x_data - b)**2). La variable b que vous avez calculée à l’exercice précédent est déjà dans votre espace de noms. Ici, fertility correspond à y_data et illiteracy à x_data.
  • Tracez le RSS (rss) en fonction de la pente (a_vals).
  • Cliquez sur Soumettre la réponse pour afficher le graphique !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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()
Modifier et exécuter le code