聚类分析是数据挖掘和机器学习领域中常用的方法,它将数据集中的对象分为若干个簇(Cluster),使得同一个簇内的对象彼此相似,而不同簇的对象之间则相对不相似。为了评估聚类效果的好坏,我们可以使用以下五大关键评分指标:

1. 聚类内部相似度(Within-Cluster Sum of Squares,WSS)

聚类内部相似度是指簇内所有对象与簇中心的距离平方和。WSS值越小,说明簇内对象越紧密,聚类效果越好。

代码示例(Python)

from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
import numpy as np

# 假设X为数据集,k为簇的数量
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])
k = 2

# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=k).fit(X)

# 计算WSS
wss = np.sum((X - kmeans.cluster_centers_[:, np.newaxis])**2, axis=2).sum()
print("WSS:", wss)

2. 聚类间相似度(Between-Cluster Sum of Squares,BSS)

聚类间相似度是指不同簇之间的距离平方和。BSS值越大,说明不同簇之间的差异越大,聚类效果越好。

代码示例(Python)

# 假设X为数据集,k为簇的数量
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])
k = 2

# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=k).fit(X)

# 计算BSS
bss = np.sum((kmeans.cluster_centers_[:, np.newaxis] - kmeans.cluster_centers_[:, np.newaxis])**2, axis=2).sum()
print("BSS:", bss)

3. 聚类轮廓系数(Silhouette Coefficient)

聚类轮廓系数是衡量聚类效果的一个指标,其值介于-1到1之间。轮廓系数越接近1,说明聚类效果越好。

代码示例(Python)

from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
import numpy as np

# 假设X为数据集,k为簇的数量
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])
k = 2

# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=k).fit(X)

# 计算轮廓系数
silhouette_avg = silhouette_score(X, kmeans.labels_)
print("Silhouette Coefficient:", silhouette_avg)

4. Calinski-Harabasz指数(Calinski-Harabasz Index)

Calinski-Harabasz指数是衡量聚类效果的一个指标,其值越大,说明聚类效果越好。

代码示例(Python)

from sklearn.metrics import calinski_harabasz_score
from sklearn.cluster import KMeans
import numpy as np

# 假设X为数据集,k为簇的数量
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])
k = 2

# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=k).fit(X)

# 计算Calinski-Harabasz指数
calinski_harabasz = calinski_harabasz_score(X, kmeans.labels_)
print("Calinski-Harabasz Index:", calinski_harabasz)

5. Davies-Bouldin指数(Davies-Bouldin Index)

Davies-Bouldin指数是衡量聚类效果的一个指标,其值越小,说明聚类效果越好。

代码示例(Python)

from sklearn.metrics import davies_bouldin_score
from sklearn.cluster import KMeans
import numpy as np

# 假设X为数据集,k为簇的数量
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])
k = 2

# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=k).fit(X)

# 计算Davies-Bouldin指数
davies_bouldin = davies_bouldin_score(X, kmeans.labels_)
print("Davies-Bouldin Index:", davies_bouldin)

通过以上五大关键评分指标,我们可以对聚类效果进行全面的评估,从而选择出最佳的聚类方法。在实际应用中,可以根据具体问题选择合适的指标进行评估。