Kiểm tra điểm bóng
Công thức cho điểm dữ liệu thứ i
(b(i) - a(i)) / max(a(i),b(i))
trong đó b (i) -> không giống nhau từ cụm lân cận gần nhất
a (i) -> khác biệt giữa các điểm trong cụm
Điều này cho điểm giữa -1 và +1.
Diễn dịch
+1 có nghĩa là rất phù hợp
-1 có nghĩa là phân loại sai [nên thuộc về một cụm khác]
Sau khi tính toán điểm bóng cho từng điểm dữ liệu, bạn có thể thực hiện cuộc gọi theo lựa chọn cho số lượng cụm.
Mã ví dụ
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score
X, y = make_blobs(n_samples=500,
n_features=2,
centers=4,
cluster_std=1,
center_box=(-10.0, 10.0),
shuffle=True,
random_state=1) # For reproducibility
range_n_clusters = [2, 3, 4, 5, 6]
for n_clusters in range_n_clusters:
# Initialize the clusterer with n_clusters value and a random generator
# seed of 10 for reproducibility.
clusterer = KMeans(n_clusters=n_clusters, random_state=10)
cluster_labels = clusterer.fit_predict(X)
# The silhouette_score gives the average value for all the samples.
# This gives a perspective into the density and separation of the formed
# clusters
silhouette_avg = silhouette_score(X, cluster_labels)
print("For n_clusters =", n_clusters,
"The average silhouette_score is :", silhouette_avg)
# Compute the silhouette scores for each sample
sample_silhouette_values = silhouette_samples(X, cluster_labels)