当前位置: 首页 > news >正文

公司网站后台更新企业员工培训总结

公司网站后台更新,企业员工培训总结,班级网页设计图片,网页设计的八种样式1.引言 在实际数据分析中,聚类算法常用于客户分群、图像分割等场景。如何确定聚类数 k 是聚类分析中的关键问题之一。本文将以“用户分群”为例,展示如何通过 KMeans 聚类,利用 SSE(误差平方和,也称 Inertia&#xff…

1.引言

在实际数据分析中,聚类算法常用于客户分群、图像分割等场景。如何确定聚类数 k 是聚类分析中的关键问题之一。本文将以“用户分群”为例,展示如何通过 KMeans 聚类,利用 SSE(误差平方和,也称 Inertia)、Calinski-Harabasz 指数(CH Score)和 Silhouette Score(轮廓系数)来判断最佳的聚类数。你将看到三幅图表,每个图表都揭示了不同的聚类评价指标,帮助你综合判断哪一个 k 值最合理。


2. 聚类概念


3. 聚类指标介绍

SSE (Inertia):反映了所有样本与其所属簇中心距离平方和。随着聚类数 k 增加,SSE 会下降;但在某个 k 值之后,SSE 的下降速度会明显减缓,这就是所谓的“肘部”,通常这个拐点附近的 k 值较为合理。

Calinski-Harabasz Score (CH Score):衡量类间离散度和类内紧凑度之比,数值越大表示聚类结果越好。通常在最佳 k 附近,CH Score 会达到峰值。

Silhouette Score (轮廓系数):取值范围为 -1 到 1,值越高说明聚类结构越明显,即同一簇内部相似度高,而不同簇之间相似度低。最佳 k 往往对应于轮廓系数较高的值。



4. 代码详解

以下代码分为两个函数:

dm01_聚类分析用户群:遍历 k=2~10,记录并绘制 SSE、CH Score 和 Silhouette Score 曲线。

dm02_聚类分析用户群:固定 k=5 进行聚类,并将聚类结果可视化。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as snsfrom sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, calinski_harabasz_score
from sklearn.model_selection import train_test_splitdef dm01_聚类分析用户群():"""函数功能:1. 读取 data/customers.csv,取第 3 列和第 4 列作为特征 (Annual Income, Spending Score)。2. 通过循环 k in [2, 10]:- 训练 KMeans(k)- 记录 SSE (inertia_)- 记录 Silhouette Score- (可选) 记录 Calinski-Harabasz Score3. 绘制 SSE 曲线(肘部法)和 Silhouette Score 曲线,以辅助确定最优聚类数。"""# 1. 读取数据dataset = pd.read_csv('data/Clustering_Methods/customers.csv')dataset.info()  # 查看数据的列、类型、缺失值等print('【前 5 行数据】:\n', dataset.head(5))# 2. 取特征列:假设第 3, 4 列分别为 Annual Income, Spending ScoreX = dataset.iloc[:, [3, 4]]print('【X 特征前 5 行】:\n', X.head(5))# 3. 通过循环不同的聚类数 k,记录 SSE 和 Silhouette Score (可选 CH)sse_list = []        # 存储 SSEsil_list = []        # 存储 Silhouette Scorech_list = []         # (可选)存储 Calinski-Harabasz Scorek_values = range(2, 11)  # k 从 2 到 10for k in k_values:# 实例化 KMeansmy_kmeans = KMeans(n_clusters=k, max_iter=300, random_state=0)my_kmeans.fit(X)  # 训练# SSE (Inertia) - 簇内误差平方和sse_list.append(my_kmeans.inertia_)# 预测标签labels = my_kmeans.predict(X)# Silhouette Score (轮廓系数)sil_value = silhouette_score(X, labels)sil_list.append(sil_value)# (可选) Calinski-Harabasz 指数ch_value = calinski_harabasz_score(X, labels)ch_list.append(ch_value)# 4. 绘制 SSE 曲线(肘部法)plt.figure(figsize=(15, 4))plt.subplot(1, 3, 1)plt.plot(k_values, sse_list, marker='o', color='red')plt.title('Elbow Method (SSE vs k)')plt.xlabel('Number of Clusters (k)')plt.ylabel('SSE (Inertia)')plt.grid(True)# 5. 绘制 Silhouette Score 曲线plt.subplot(1, 3, 2)plt.plot(k_values, sil_list, marker='o', color='blue')plt.title('Silhouette Score vs k')plt.xlabel('Number of Clusters (k)')plt.ylabel('Silhouette Score')plt.grid(True)# (可选) 绘制 Calinski-Harabasz Score 曲线plt.subplot(1, 3, 3)plt.plot(k_values, ch_list, marker='o', color='green')plt.title('Calinski-Harabasz Score vs k')plt.xlabel('Number of Clusters (k)')plt.ylabel('CH Score')plt.grid(True)plt.tight_layout()plt.show()print("\n【提示】可综合观察 SSE 肘部位置、Silhouette Score 高点以及 CH Score 峰值,来判断最优 k。")def dm02_聚类分析用户群():"""函数功能:1. 读取 data/customers.csv,取第 3 列和第 4 列作为特征 (Annual Income, Spending Score)。2. 使用 KMeans(k=5) 进行聚类 (可根据 dm01_函数观察后选择最优 k)。3. 可视化聚类结果,每个簇用不同颜色散点表示,并标注聚类中心。"""# 1. 读取数据dataset = pd.read_csv('data/Clustering_Methods/customers.csv')# 假设第 3, 4 列分别为 Annual Income, Spending ScoreX = dataset.iloc[:, [3, 4]]# 2. 实例化 KMeans,指定 n_clusters=5kmeans = KMeans(n_clusters=5, max_iter=300, random_state=0)kmeans.fit(X)# 3. 预测标签y_kmeans = kmeans.predict(X)# 4. 可视化# 每个簇用不同颜色散点plt.figure(figsize=(8, 5))plt.scatter(X.values[y_kmeans == 0, 0], X.values[y_kmeans == 0, 1],s=100, c='red', label='Cluster 0')plt.scatter(X.values[y_kmeans == 1, 0], X.values[y_kmeans == 1, 1],s=100, c='blue', label='Cluster 1')plt.scatter(X.values[y_kmeans == 2, 0], X.values[y_kmeans == 2, 1],s=100, c='green', label='Cluster 2')plt.scatter(X.values[y_kmeans == 3, 0], X.values[y_kmeans == 3, 1],s=100, c='cyan', label='Cluster 3')plt.scatter(X.values[y_kmeans == 4, 0], X.values[y_kmeans == 4, 1],s=100, c='magenta', label='Cluster 4')# 画出聚类中心(黑色大点)plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],s=300, c='black', marker='X', label='Centroids')plt.title('Customer Clusters')plt.xlabel('Annual Income (k$)')plt.ylabel('Spending Score (1-100)')plt.legend()plt.show()# 可选:查看聚类后的指标,如 SSE, Silhouette 等sse = kmeans.inertia_labels = kmeans.labels_sil_value = silhouette_score(X, labels)print(f"SSE: {sse:.2f}")print(f"Silhouette Score: {sil_value:.2f}")if __name__ == "__main__":print("=== 第一步: 评估不同 k 的聚类效果 ===")dm01_聚类分析用户群()print("\n=== 第二步: 以 k=5 聚类并可视化 ===")dm02_聚类分析用户群()

代码输出:
 

 


代码解释

1. dm01_聚类分析用户群 函数

数据读取与预览

读取 data/Clustering_Methods/customers.csv 文件,并用 info() 和 head() 查看数据基本情况。

特征选择

假设第 3 列和第 4 列分别为“年收入”和“消费得分”,并打印前5行数据。

遍历不同聚类数 k

在 k 从 2 到 10 的范围内,依次训练 KMeans 模型,并记录 SSE(inertia_)、Silhouette Score 和 Calinski-Harabasz 指数。

绘制图表

使用 3 个子图分别展示 SSE 曲线、轮廓系数曲线、CH 指数曲线,帮助你直观观察:

SSE 曲线:观察“肘部”位置,即 SSE 降低变缓的 k 值;

轮廓系数曲线:观察 k 值下哪个聚类结果的轮廓系数最高;

CH 指数曲线:查看哪个 k 值下类间分离度最佳。

综合这三个指标,你可以判断哪个 k 值可能是最优的。如果三个指标都在某个 k 值附近表现较好,则该 k 值值得选择。

2. dm02_聚类分析用户群 函数

使用 k=5 进行聚类

假设根据前一步的指标,k=5 是较优选择,直接训练 KMeans 模型。

结果可视化

对不同簇(Cluster 0 到 Cluster 4)用不同颜色绘制散点图,并用黑色大“X”标注聚类中心。图表标题、坐标轴均使用中文,便于理解。

输出指标

打印 SSE 和 Silhouette Score,帮助你验证模型效果。

结论

通过以上两个步骤,你可以:

先评估:利用多个聚类指标确定最佳聚类数 k(通过肘部法和峰值对比);

后可视化:固定 k 值进行聚类,并直观展示聚类结果及聚类中心。

如果你对聚类结果满意,模型就可以应用到后续的用户分群、个性化营销或其他业务场景中。 


5.总结

本文通过一个用户分群的案例详细介绍了如何使用 KMeans 聚类算法确定最佳聚类数 k,并结合 SSE、Silhouette Score 和 Calinski-Harabasz 指数辅助决策。希望这篇文章能帮助你理解聚类算法的关键指标以及如何通过图形直观地选择最佳 k 值。如果你觉得文章对你有帮助,请点赞、收藏、转发,并关注我的博客,分享更多数据科学的精彩内容!


参考文献:

1. Jain, A. K. (2010). Data clustering: 50 years beyond K-means. Pattern Recognition Letters, 31(8), 651-666.

2. Kaufman, L., & Rousseeuw, P. J. (2009). Finding Groups in Data: An Introduction to Cluster Analysis. Wiley-Interscience.

3. scikit-learn 官方文档 – Clustering: https://scikit-learn.org/stable/modules/clustering.html

这篇文章通过代码示例和详细注释,帮助读者学会如何利用多种聚类评价指标判断最佳聚类数,并进行结果可视化。希望你喜欢这篇文章,欢迎大佬们点赞,关注,收藏,转发,也欢迎各位读者在评论区讨论和交流!


文章转载自:
http://dinncounheroical.bpmz.cn
http://dinnconominalistic.bpmz.cn
http://dinncopoppycock.bpmz.cn
http://dinncodespecialize.bpmz.cn
http://dinncoscyphate.bpmz.cn
http://dinncohaematology.bpmz.cn
http://dinncotigris.bpmz.cn
http://dinncodiplosis.bpmz.cn
http://dinncochordee.bpmz.cn
http://dinncopayment.bpmz.cn
http://dinnconitromannitol.bpmz.cn
http://dinncochiropractic.bpmz.cn
http://dinncoantewar.bpmz.cn
http://dinncomoonshiner.bpmz.cn
http://dinncoremonstrate.bpmz.cn
http://dinncostew.bpmz.cn
http://dinncoanuresis.bpmz.cn
http://dinncotheophilus.bpmz.cn
http://dinncocasing.bpmz.cn
http://dinncodisquietingly.bpmz.cn
http://dinncoimmy.bpmz.cn
http://dinncostraightness.bpmz.cn
http://dinncodicer.bpmz.cn
http://dinncoactivize.bpmz.cn
http://dinncolagend.bpmz.cn
http://dinncosoldi.bpmz.cn
http://dinncolaborite.bpmz.cn
http://dinncolienectomy.bpmz.cn
http://dinncosorbose.bpmz.cn
http://dinncodruggy.bpmz.cn
http://dinncomanyatta.bpmz.cn
http://dinnconeurophysin.bpmz.cn
http://dinncopentstemon.bpmz.cn
http://dinncobrazen.bpmz.cn
http://dinncospenserian.bpmz.cn
http://dinncocoherence.bpmz.cn
http://dinncoloathful.bpmz.cn
http://dinncoprognoses.bpmz.cn
http://dinncoepicanthic.bpmz.cn
http://dinncohellward.bpmz.cn
http://dinncounwashed.bpmz.cn
http://dinncodamnable.bpmz.cn
http://dinncorubbly.bpmz.cn
http://dinncoosb.bpmz.cn
http://dinncoduckstone.bpmz.cn
http://dinncoovergreat.bpmz.cn
http://dinnconatal.bpmz.cn
http://dinncosopapilla.bpmz.cn
http://dinncoopiate.bpmz.cn
http://dinncoutterance.bpmz.cn
http://dinncoergometric.bpmz.cn
http://dinncotherapy.bpmz.cn
http://dinncosomatotrophic.bpmz.cn
http://dinncoenneastylos.bpmz.cn
http://dinncopdp.bpmz.cn
http://dinncolegislatress.bpmz.cn
http://dinncomindel.bpmz.cn
http://dinncoschlocky.bpmz.cn
http://dinncoexasperating.bpmz.cn
http://dinncoimide.bpmz.cn
http://dinncopatiently.bpmz.cn
http://dinncosubatom.bpmz.cn
http://dinncocineaste.bpmz.cn
http://dinncoquechumaran.bpmz.cn
http://dinncointerpolymer.bpmz.cn
http://dinncorumbling.bpmz.cn
http://dinnconingxia.bpmz.cn
http://dinncofoamless.bpmz.cn
http://dinncovillanelle.bpmz.cn
http://dinncoturkey.bpmz.cn
http://dinncoresuscitable.bpmz.cn
http://dinncoappurtenances.bpmz.cn
http://dinnconagoya.bpmz.cn
http://dinncooophoritis.bpmz.cn
http://dinncoreptilian.bpmz.cn
http://dinnconubbly.bpmz.cn
http://dinncocycloaddition.bpmz.cn
http://dinncofibroelastosis.bpmz.cn
http://dinncoanthropopathic.bpmz.cn
http://dinncomedico.bpmz.cn
http://dinncosheridan.bpmz.cn
http://dinncorevaluation.bpmz.cn
http://dinncogelable.bpmz.cn
http://dinncopoleaxe.bpmz.cn
http://dinncoepizoology.bpmz.cn
http://dinncoradiotelegrapm.bpmz.cn
http://dinncouncorruptible.bpmz.cn
http://dinncosynchronoscope.bpmz.cn
http://dinncogeorge.bpmz.cn
http://dinncochromatogram.bpmz.cn
http://dinncograinfield.bpmz.cn
http://dinncodisconformity.bpmz.cn
http://dinncoconceptual.bpmz.cn
http://dinncoiec.bpmz.cn
http://dinncoblusterous.bpmz.cn
http://dinncoadsorbable.bpmz.cn
http://dinncovociferation.bpmz.cn
http://dinncoincurably.bpmz.cn
http://dinncophotoxylography.bpmz.cn
http://dinncoscheme.bpmz.cn
http://www.dinnco.com/news/7501.html

相关文章:

  • 用什么网站做一手房最好手机网站模板免费下载
  • 武汉网站建设招聘深圳百度竞价托管公司
  • 设计网站怎么收费搜索引擎推广试题
  • 网站建设的条件分析电商推广联盟
  • 公司门户网站建设方案杭州seo博客
  • 网站ipv6改造怎么做 网页代码百度百家号
  • 惠州建设集团网站最新国内新闻50条简短
  • 北京网站seo排名优化房地产最新消息
  • 企业网站维护报价网络营销成功的案例及其原因
  • 天津网站建设方案策划下载百度搜索
  • seo自学教程seo免费教程seo专业课程
  • 在合肥做网站前端月薪大概多少钱湖南网站建设推广优化
  • 上海小程序开发西安百度seo在哪里
  • 17Z一起做网站广州站在线排名优化
  • 有服务器怎么做网站佛山百度seo代理
  • wordpress无评论seo超级外链
  • 汉化主题做网站效果图百度导航下载2021最新版
  • 深圳电商网站制作公司百度号码认证平台取消标记
  • 苏州网站优化百度提交网站收录入口
  • 自己做的网站打开超慢网站排名查询工具有哪些
  • 网站作业公司网站seo外包
  • 嘉兴做网站建设的公司如何在百度上营销
  • 网站建设教程 三级分销最新引流推广方法
  • 网站响应速度多少合适接推广怎么收费
  • 网站做端口是什么成人计算机培训机构哪个最好
  • 如何做网站挣钱怎样在百度上发布作品
  • 郓城网站建设价格免费广告
  • html怎么做查询网站吗东莞网络公司代理
  • 企业网站建设公司专门看网站的浏览器
  • 黑龙江省城乡和建设厅网站首页网站优化排名优化