Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 5 / Pratique

Atelier : formes et distances à la main

Calculer prédictions, transposée et distances en Python pur.

◷ 25 minutesTravail sur votre machine

Énoncé

Avec du Python pur (listes et boucles), reprenez X = [[1., 2.], [3., 4.], [5., 6.]] et w = [2., 0.5], b = 3. : calculez les 3 prédictions x0*w0 + x1*w1 + b, la transposée de X, X.T @ X en (2, 2), puis les distances L2 de chaque ligne à [3., 4.]. La version numpy sans boucle viendra au Ch10 mia-numpy.

Contraintes

Écrivez les boucles explicitement : c'est le geste que numpy automatisera au Ch10. Affichez prédictions et distances. Notez unités et sens des colonnes dans votre carnet.

Indices

Les indices lignes/colonnes se comptent à partir de 0. La transposée échange lignes et colonnes : X en (3, 2) devient (2, 3). La distance L2 se calcule par racine((dx)² + (dy)²).

Correction disponibleCherchez d’abord par vous-même.Voir la correction

Correction

X = [[1., 2.], [3., 4.], [5., 6.]]
w = [2., 0.5]; b = 3.0
pred = [x[0] * w[0] + x[1] * w[1] + b for x in X]
print(pred)  # [6.0, 11.0, 16.0]
Xt = [[X[r][c] for r in range(3)] for c in range(2)]
print(Xt)  # [[1.0, 3.0, 5.0], [2.0, 4.0, 6.0]]
ref = [3., 4.]
d = [((x[0] - ref[0]) ** 2 + (x[1] - ref[1]) ** 2) ** 0.5 for x in X]
print([round(v, 3) for v in d])  # [2.828, 0.0, 2.828]

La ligne du milieu est à distance 0 d'elle-même, les deux autres symétriques. Si X.T @ X est quasi singulière (déterminant proche de 0), suspectez une colinéarité : c'est l'indice qui mènera à Ridge.