英文网站制作费用,长沙网站开,wordpress防采集插件,互联网企业营销策略【精选优质专栏推荐】 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解《网安渗透工具使用教程(全)》 —— 一站式工具手册《CTF 新手入门实战教…【精选优质专栏推荐】《AI 技术前沿》—— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》—— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》—— 渗透测试必备工具详解《网安渗透工具使用教程(全)》—— 一站式工具手册《CTF 新手入门实战教程》—— 从题目讲解到实战技巧《前后端项目开发(新手必知必会)》—— 实战驱动快速上手每个专栏均配有案例与图文讲解循序渐进适合新手与进阶学习者欢迎订阅。文章目录前言理解轮廓系数指标企鹅数据集中的轮廓系数分析实战总结前言在本文中你将学习如何使用轮廓系数分析来评估 k-means 聚类结果并解释平均得分和每个聚类的得分以指导模型选择。我们将讨论的主题包括轮廓系数衡量什么以及如何计算如何使用轮廓系数分析来选择合理的聚类数量可视化每个样本的轮廓值以诊断聚类质量机器学习中的聚类模型必须通过其将数据划分为具有不同特征的有意义组的能力来进行评估。评估由 k-means 等迭代算法生成的聚类内部凝聚力和相互分离度的关键指标之一是轮廓系数它量化一个对象——数据实例 i——与其自身聚类相比于其他聚类的相似程度。本文重点介绍如何通过轮廓系数分析来评估和解释聚类质量即基于对轮廓系数的规范使用来分析聚类结构和有效性。轮廓系数分析在市场营销、制药、化学工程等领域的实际分群任务中具有现实意义。理解轮廓系数指标对于在被分成 k 个聚类的数据集中给定的数据点或实例 i其轮廓系数定义为在公式中a(i) 是簇内凝聚度即 i 与其所属簇中其余点之间的平均距离。与此同时b(i) 是簇间分离度即 i 与最近邻簇中点之间的平均距离。轮廓系数的取值范围为 −1 到 1。较低的 a(i) 和较高的 b(i) 会提升轮廓系数被解释为更高质量的聚类即点与其簇的联系更紧密同时与其他簇的分离更好。总而言之轮廓系数越高越好。在实践中我们通常计算所有实例的平均轮廓系数以总结某个聚类结果的整体聚类质量。轮廓系数被广泛用于评估不同数据集和领域中的聚类质量因为它同时捕获了凝聚度和分离度。它也常被用作选择合适聚类数量 k 的替代方法或补充方法作为对肘部法的补充——这是应用 k-means 及其变体等迭代方法时的必要步骤。此外当你绘制单样本和簇级别的轮廓图时轮廓系数也可作为一种具有洞察力的可视化工具其中条形宽度反映簇的大小。下面的示例展示了一个数据集中被划分为三个簇的所有实例的轮廓图将轮廓值按簇分组以便与该聚类结果的整体平均轮廓系数进行比较。从另一方面来看轮廓系数分析在某些数据集和聚类形状例如非凸或结构复杂的簇上可能不太可靠并且在非常高维的空间中可能会面临挑战。企鹅数据集中的轮廓系数分析实战为了演示如何使用轮廓系数分析进行聚类评估我们将使用著名的 Palmer Archipelago 企鹅数据集。我们快速浏览准备步骤加载和预处理这些步骤在本介绍性聚类分析教程中有详细解释。我们将使用 pandas、scikit-learn、Matplotlib 和 NumPy。importpandasaspdfromsklearn.preprocessingimportStandardScalerfromsklearn.clusterimportKMeansfromsklearn.metricsimportsilhouette_score,silhouette_samplesimportmatplotlib.pyplotaspltimportnumpyasnp# Load dataset (replace with actual path or URL)penguinspd.read_csv(https://raw.githubusercontent.com/gakudo-ai/open-datasets/refs/heads/main/penguins.csv)penguinspenguins.dropna()features[bill_length_mm,bill_depth_mm,flipper_length_mm,body_mass_g]Xpenguins[features]# Scale numerical features for more effective clusteringscalerStandardScaler()X_scaledscaler.fit_transform(X)接下来我们应用 k-means 来寻找数据集中的聚类。我们对多个聚类数量 k即 n_clusters 参数重复这一过程范围从 2 到 6。对于每个设置我们计算轮廓系数。range_n_clusterslist(range(2,7))silhouette_avgs[]forn_clustersinrange_n_clusters:kmeansKMeans(n_clustersn_clusters,n_init10,random_state42)cluster_labelskmeans.fit_predict(X_scaled)sil_avgsilhouette_score(X_scaled,cluster_labels)silhouette_avgs.append(sil_avg)print(fFor n_clusters {n_clusters}, average silhouette_score {sil_avg:.3f})输出结果为For n_clusters 2, average silhouette_score 0.531For n_clusters 3, average silhouette_score 0.446For n_clusters 4, average silhouette_score 0.419For n_clusters 5, average silhouette_score 0.405For n_clusters 6, average silhouette_score 0.392这表明在 k 2 时获得了最高的轮廓系数。这通常意味着数据点的最一致分组尽管它并不总是与生物学或领域的实际真值一致。在企鹅数据集中尽管存在具有不同特征的三种物种重复的 k-means 聚类和轮廓系数分析表明在所选特征空间中这里是四个数值属性将数据划分成两组可能更一致。这可能是因为轮廓系数反映的是所选特征中的几何可分性而非类别标签物种之间特征的重叠可能会让 k-means 倾向于选择比实际物种数量更少的聚类数。让我们可视化五种配置的轮廓结果fig,axesplt.subplots(1,len(range_n_clusters),figsize(25,5),shareyFalse)fori,n_clustersinenumerate(range_n_clusters):axaxes[i]kmeansKMeans(n_clustersn_clusters,n_init10,random_state42)labelskmeans.fit_predict(X_scaled)sil_valssilhouette_samples(X_scaled,labels)sil_avgsilhouette_score(X_scaled,labels)y_lower10forjinrange(n_clusters):ith_sil_valssil_vals[labelsj]ith_sil_vals.sort()size_jith_sil_vals.shape[0]y_uppery_lowersize_j colorplt.cm.nipy_spectral(float(j)/n_clusters)ax.fill_betweenx(np.arange(y_lower,y_upper),0,ith_sil_vals,facecolorcolor,edgecolorcolor,alpha0.7)ax.text(-0.05,y_lower0.5*size_j,str(j))y_lowery_upper10# separation between clustersax.set_title(fSilhouette Plot for k {n_clusters})ax.axvline(xsil_avg,colorred,linestyle--)ax.set_xlabel(Silhouette Coefficient)ifi0:ax.set_ylabel(Cluster Label)ax.set_xlim([-0.1,1])ax.set_ylim([0,len(X_scaled)(n_clusters1)*10])plt.tight_layout()plt.show()一个明显的观察是对于 k ≥ 4平均轮廓系数下降到大约 0.4而在 k 2 或 k 3 时更高。如果我们为聚类选择不同的更窄的属性子集会怎样例如只考虑喙长和鳍长。这只需将代码开头附近的特征选择语句替换为features[bill_length_mm,flipper_length_mm]然后重新运行其余部分。在聚类之前尝试不同的特征选择并检查轮廓系数分析的结果在不同聚类数量的选择下是否保持一致或发生变化。总结本文提供了对聚类算法中一种标准聚类质量指标——轮廓系数的简洁且实用的理解并展示了如何使用它来批判性地分析聚类结果。