Andere Antworten sind korrekt, aber es kann hilfreich sein, sich anhand eines Beispiels einen intuitiven Überblick über das Problem zu verschaffen. Unten generiere ich ein Dataset mit zwei klaren Clustern, aber die nicht gruppierte Dimension ist viel größer als die gruppierte Dimension (beachten Sie die unterschiedlichen Maßstäbe auf den Achsen). Das Clustering für die nicht normalisierten Daten schlägt fehl. Clustering auf den normalisierten Daten funktioniert sehr gut.
Dasselbe gilt für Daten, die in beiden Dimensionen geclustert werden, aber die Normalisierung würde weniger helfen. In diesem Fall kann es hilfreich sein, eine PCA zu erstellen und dann zu normalisieren. Dies ist jedoch nur hilfreich, wenn die Cluster linear trennbar sind und sich in den PCA-Dimensionen nicht überlappen. (Dieses Beispiel funktioniert wegen der geringen Clusteranzahl nur so deutlich)
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')