Bonjour
Dans mon code qui fonctionne
def normalisation_min_max(X):
X_tilde = np.zeros(shape = X.shape)
for i in range(0,X.shape[1]):
petit=min(X[:,i])
grand=max(X[:,i])
X_tilde[:,i]=(X[:,i]-petit)/(grand-petit)
return X_tilde
X=np.array([[24,1.88],
[18,1.68],
[14,1.65]])
print(X.shape[1])
print(normalisation_min_max(X))
ça me retourne bien
2
[[1. 1. ]
[0.4 0.13043478]
[0. 0. ]]
Je ne comprends pas pourquoi ça fonctionne car dans la définition de la fonction, i balaye les valeurs de 0 à 2 (puisque X est de dimension 3-2, et que X.shape[1] me retourne la taille de la deuxième dimension de X qui est 2)
Les index commençant à 0, dans la première itération du for, ça modifie la première colonne du X_tilde.
Dans la 2e itération, ça modifie la 2e colonne du X_tilde
Puis dans la 3e itération (quand i prend la valeur 2), d’après moi ça devrait mettre une erreur du style out of range parce que petit=min(X[:,2]) ne devrait pas exister.
Et pourtant ça fonctionne donc je ne comprends pas. Merci de m’expliquer.
Pour moi la boucle for devrait être for i in range(0,X.shape[1]-1): afin de balayer de 0 à 1 les colonnes de la matrice X.