肘部法则和轮廓系数

一、肘部法则–聚类数量选择
肘部法则的计算原理是成本函数,成本函数是类别畸变程度之和,每个类的畸变程度等于每个变量点到其类别中心的位置距离平方和(类内部的成员彼此越紧凑则类的畸变程度越小,越分散越大)。在选择类别数量上,肘部法则会把不同值的成本函数值画出来。随着值的增大,每个类包含的样本数会减少,于是样本离其重心会更近平均畸变程度会减小。随着值继续增大,平均畸变程度的改善效果会不断减低。值增大过程中,畸变程度的改善效果下降幅度最大的位置对应的值就是肘部。

二、轮廓系数–聚类效果评估
轮廓系数是聚类效果好坏的一种评价方式,它结合内聚度和分离度两种因素。
根据样本i的簇内不相似度ai和簇间不相似度bi ,定义样本i的轮廓系数si, si接近1,则说明样本i聚类合理;si接近-1,则说明样本i更应该分类到另外的簇;若si 近似为0,则说明样本i在两个簇的边界上。所有样本的 si 的均值称为聚类结果的轮廓系数,是该聚类是否合理、有效的度量。
在这里插入图片描述

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
肘部法则轮廓系数法是聚类分析常用的评估指标,下面是详细的Python代码实现。 肘部法则代码: ```python from sklearn.cluster import KMeans import matplotlib.pyplot as plt from scipy.spatial.distance import cdist import numpy as np # 创建数据集 X = np.random.uniform(0, 1, (100, 2)) # 用肘部法则来确定最优的K值 K = range(1, 10) mean_distortions = [] for k in K: kmeans = KMeans(n_clusters=k) kmeans.fit(X) mean_distortions.append(sum(np.min(cdist(X, kmeans.cluster_centers_, 'euclidean'), axis=1)) / X.shape[0]) # 画出K值和畸变程度的关系图 plt.plot(K, mean_distortions, 'bx-') plt.xlabel('k') plt.ylabel('Average distortion') plt.title('Selecting k with the Elbow Method') plt.show() ``` 轮廓系数法代码: ```python from sklearn.cluster import KMeans from sklearn.metrics import silhouette_samples, silhouette_score import matplotlib.pyplot as plt import numpy as np # 创建数据集 X = np.random.uniform(0, 1, (100, 2)) # 用轮廓系数法来确定最优的K值 K = range(2, 10) silhouette_scores = [] for k in K: kmeans = KMeans(n_clusters=k) kmeans.fit(X) silhouette_avg = silhouette_score(X, kmeans.labels_) silhouette_scores.append(silhouette_avg) # 画出K值和轮廓系数的关系图 plt.plot(K, silhouette_scores, 'bx-') plt.xlabel('k') plt.ylabel('Silhouette Coefficient') plt.title('Selecting k with the Silhouette Method') plt.show() ``` 以上是肘部法则轮廓系数法的Python代码实现,可以根据需要进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值