অন্যান্য উত্তরগুলি সঠিক, তবে এটি উদাহরণ দেখে সমস্যাটির একটি স্বজ্ঞাত ধারণা পেতে সহায়তা করতে পারে। নীচে, আমি একটি ডেটাসেট উত্পন্ন করি যার দুটি পরিষ্কার ক্লাস্টার রয়েছে তবে ক্লাস্টারযুক্ত অমিতিকাগুলি ক্লাস্টারযুক্ত মাত্রার চেয়ে অনেক বড় (অক্ষের বিভিন্ন স্কেলগুলি নোট করুন)। নন-নরমালাইজড ডেটাতে ক্লাস্টারিং ব্যর্থ। স্বাভাবিক করা ডেটাগুলিতে ক্লাস্টারিং খুব ভালভাবে কাজ করে।
উভয় মাত্রায় ক্লাস্টারযুক্ত ডেটার সাথে একই প্রয়োগ হবে তবে সাধারণীকরণ কম সাহায্য করবে। সেক্ষেত্রে এটি পিসিএ করতে সাহায্য করতে পারে, তারপরে স্বাভাবিককরণ করতে পারে তবে এটি কেবল তখনই সহায়তা করবে যদি ক্লাস্টারগুলি রৈখিকভাবে পৃথকযোগ্য হয় এবং পিসিএ মাত্রাগুলিতে ওভারল্যাপ না করে। (এই উদাহরণটি কেবল ক্লাস্টারের সংখ্যা কম হওয়ার কারণে এত স্পষ্টভাবে কাজ করে)
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')