D'autres réponses sont correctes, mais il serait peut-être utile de comprendre intuitivement le problème en voyant un exemple. Ci-dessous, je génère un jeu de données comportant deux clusters clairs, mais la dimension non-clusterisée est beaucoup plus grande que la dimension clusterisée (notez les différentes échelles sur les axes). La mise en cluster sur les données non normalisées échoue. Le regroupement sur les données normalisées fonctionne très bien.
La même chose s'appliquerait avec les données regroupées dans les deux dimensions, mais la normalisation aiderait moins. Dans ce cas, il peut être utile de procéder à une ACP, puis de la normaliser, mais cela ne servirait que si les grappes sont séparables linéairement et ne se chevauchent pas dans les dimensions de la CPA. (Cet exemple ne fonctionne que très clairement à cause du faible nombre de clusters)
import numpy as np
import seaborn
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
rnorm = np.random.randn
x = rnorm(1000) * 10
y = np.concatenate([rnorm(500), rnorm(500) + 5])
fig, axes = plt.subplots(3, 1)
axes[0].scatter(x, y)
axes[0].set_title('Data (note different axes scales)')
km = KMeans(2)
clusters = km.fit_predict(np.array([x, y]).T)
axes[1].scatter(x, y, c=clusters, cmap='bwr')
axes[1].set_title('non-normalised K-means')
clusters = km.fit_predict(np.array([x / 10, y]).T)
axes[2].scatter(x, y, c=clusters, cmap='bwr')
axes[2].set_title('Normalised K-means')