अन्य उत्तर सही हैं, लेकिन एक उदाहरण देखकर समस्या का सहज ज्ञान प्राप्त करने में मदद मिल सकती है। नीचे, मैं एक डेटासेट उत्पन्न करता हूं जिसमें दो स्पष्ट क्लस्टर होते हैं, लेकिन गैर-संकुल आयाम क्लस्टर आयाम से बहुत बड़ा होता है (कुल्हाड़ियों पर विभिन्न पैमानों पर ध्यान दें)। गैर-सामान्यीकृत डेटा पर क्लस्टरिंग विफल। सामान्यीकृत डेटा पर क्लस्टरिंग बहुत अच्छी तरह से काम करता है।
दोनों आयामों में डेटा क्लस्टर के साथ एक ही लागू होगा, लेकिन सामान्यीकरण कम मदद करेगा। उस स्थिति में, यह एक पीसीए करने में मदद कर सकता है, फिर सामान्य कर सकता है, लेकिन यह केवल तभी मदद करेगा जब क्लस्टर रैखिक रूप से अलग होने योग्य हों, और पीसीए आयामों में ओवरलैप न हों। (यह उदाहरण केवल क्लस्टर गणना के कारण स्पष्ट रूप से काम करता है)
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')