Jawaban lain benar, tetapi mungkin bisa membantu untuk memahami secara intuitif masalah dengan melihat contoh. Di bawah ini, saya menghasilkan dataset yang memiliki dua kluster yang jelas, tetapi dimensi non-cluster jauh lebih besar daripada dimensi cluster (perhatikan skala yang berbeda pada sumbu). Clustering pada data non-normal gagal. Clustering pada data yang dinormalkan bekerja dengan sangat baik.
Hal yang sama akan berlaku dengan data yang dikelompokkan di kedua dimensi, tetapi normalisasi akan kurang membantu. Dalam hal ini, itu mungkin membantu untuk melakukan PCA, kemudian menormalkan, tetapi itu hanya akan membantu jika cluster dipisahkan secara linear, dan tidak tumpang tindih dalam dimensi PCA. (Contoh ini hanya bekerja dengan sangat jelas karena jumlah cluster yang rendah)
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')
tidak ada apa-apa1
sumber