CommencezCommencez 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, aussi appelée RSS (pour residual sum of squares). Dans cet exercice, vous allez tracer la fonction optimisée, soit la RSS, en fonction du paramètre de pente a. Pour y arriver, fixez l'ordonnée à l'origine à la valeur trouvée lors de l'optimisation. Ensuite, tracez la RSS en fonction de la pente. Où est son minimum?

Cette activité fait partie du cours

Réflexion statistique en Python (partie 2)

Voir le cours

Instructions de l’exercice

  • Indiquez les valeurs de la pente pour calculer la 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 la RSS à l'aide de np.empty_like() et du tableau que vous avez créé ci-dessus. La fonction empty_like() retourne un nouveau tableau avec la même forme et le même type qu'un tableau donné (dans ce cas-ci, a_vals).
  • Écrivez une boucle for pour calculer la somme de la RSS pour la pente. Indice : la RSS est donnée par np.sum((y_data - a * x_data - b)**2). La variable b que vous avez calculée dans le dernier exercice est déjà dans votre espace de noms. Ici, fertility correspond à y_data et illiteracy à x_data.
  • Tracez la RSS (rss) en fonction de la pente (a_vals).
  • Appuyez sur Soumettre pour voir le graphique!

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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