聚类算法,根据样本之间的相似性,将样本划分到不同的类别中。
聚类算法有:K-means聚类、层次聚类、DBSCAN聚类、谱聚类等,其中,主要以K均值K-Means算法最为常用,k-Means是一种无监督学习的聚类算法,用于将数据划分为k个互不重叠的簇(clusters)。
1. 聚类算法的核心思想
核心思想:通过迭代优化,将样本分配到最近的簇中心(质心),并更新质心位置,直到收敛。
Api应用:
# 导包 from sklearn.cluster import KMeans # 创建模型实例 model = KMeans(n_clusters=4, random_state=22) # 模型训练 estimator.fit(x) # 模型预测 pred = estimator.predict(x)2. K-Means算法的底层流程:
1. 确定初始K中心,初始化K值,或利用K-Means++算法优化初始点的选择,让簇之间的距离尽可能远。
2. 寻找最优的质心,不断迭代、分配/更新的过程,直到收敛或达到迭代次数,使得簇内平方和达到最小值。
3. 确定最终结果,当迭代停止时,算法输出最终的K个簇和对应的质心。
3. 聚类算法的模型评估函数:
聚类算法常用的评估方法有:
SSE: 误差平方和,考虑簇内距离,SSE 相对越小越好,
肘部法:下降率突然变缓时,聚类效果最好。
Api:KMeans.inertia_属性
SC: SC轮廓系数法,考虑簇内距离和簇外距离,取值为[-1, 1],SC值越大,聚类效果越好。
Api:from sklearn.metrics import silhouette_score
通过图像可观察到n_clusters=4取到最大值;最佳值4
CH: CH轮廓系数法,考虑簇内距离和簇外距离、质心的个数,CH值越大,聚类效果越好。
Api:from sklearn.metrics import calinski_harabasz_score
通过图像可观察到n_clusters=4取到最大值;最佳值4