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

机器学习——聚类评价指标SSE、SC、CH演示案例

一.评价指标简介SSE考虑了簇内因素SSE越越小越好SSE肘部法常用来确定聚类的最佳K值SC轮廓系数法考虑了簇内和簇间因素数值越大越好CH考虑簇内簇间以及K值因素数值越大越好二.代码部分详解1.SSE肘部法#1.演示SSE肘部法 def dm01_SSE(): #1.定义sse列表记录每个k值的SSE值 sse_list [] #生成数据 参1样本数量 参2特征数 参34个簇 参4标准差 参5随机种子 x, y make_blobs(n_samples1000, n_features2, centers[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std[0.4, 0.2, 0.2, 0.2], random_state23) #3.for循环遍历获取到每个K值计算对应的sse值并添加到sse_list 列表中 for k in range(1,100): #3.1 创建k-means对象指定K值迭代次数随机种子 estimator KMeans(n_clustersk, max_iter100, random_state23) #3.2训练模型 estimator.fit(x) #3.3模型预测 #3.4获取到每个簇的sse值 sse_value estimator.inertia_ #3.5将每个K值对应的sse添加到sse_list中 sse_list.append(sse_value) #绘制SSE曲线-》数据的可视化 #4.1创建画布指定尺寸 plt.figure(figsize(20, 10)) #4.2设计标题 plt.title(SSE) #4.3设置x的 刻度 plt.xticks(range(0, 100, 3) ) #4.4添加x轴 y轴的标签 plt.xlabel(K) plt.ylabel(SSE) #4.5绘制网格 plt.grid() #4.6绘制折线图 #参1K值 参2K对应的sse值 plt.plot(range(1, 100), sse_list) plt.show()2.SC#2.演示SC轮廓系数法 def dm02_SC(): #1.定义sc列表记录每个k值的sc值 sc_list [] #生成数据 参1样本数量 参2特征数 参34个簇 参4标准差 参5随机种子 x, y make_blobs(n_samples1000, n_features2, centers[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std[0.4, 0.2, 0.2, 0.2], random_state23) #3.for循环遍历获取到每个K值计算对应的sc值并添加到sc_list 列表中 for k in range(2, 100): #考虑簇外至少两个簇 #3.1 创建k-means对象指定K值迭代次数随机种子 estimator KMeans(n_clustersk, max_iter100, random_state23) #3.2训练模型 estimator.fit(x) #3.3模型预测 y_pred estimator.predict(x) #3.4获取到每个簇的sc值 sc_value silhouette_score(x, y_pred) #3.5将每个K值对应的sc添加到sc_list中 sc_list.append(sc_value) #绘制sc曲线-》数据的可视化 #4.1创建画布指定尺寸 plt.figure(figsize(20, 10)) #4.2设计标题 plt.title(sc) #4.3设置x的 刻度 plt.xticks(range(0, 100, 3) ) #4.4添加x轴 y轴的标签 plt.xlabel(K) plt.ylabel(sc) #4.5绘制网格 plt.grid() #4.6绘制折线图 #参1K值 参2K对应的sc值 plt.plot(range(2, 100), sc_list) plt.show()3.CH#3.演示CH轮廓系数法 def dm03_ch(): #1.定义ch列表记录每个k值的ch值 ch_list [] #生成数据 参1样本数量 参2特征数 参34个簇 参4标准差 参5随机种子 x, y make_blobs(n_samples1000, n_features2, centers[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std[0.4, 0.2, 0.2, 0.2], random_state23) #3.for循环遍历获取到每个K值计算对应的ch值并添加到ch_list 列表中 for k in range(2, 100): #考虑簇外至少两个簇 #3.1 创建k-means对象指定K值迭代次数随机种子 estimator KMeans(n_clustersk, max_iter100, random_state23) #3.2训练模型 estimator.fit(x) #3.3模型预测 y_pred estimator.predict(x) #3.4获取到每个簇的ch值 ch_value calinski_harabasz_score(x, y_pred) #3.5将每个K值对应的ch添加到ch_list中 ch_list.append(ch_value) #绘制ch曲线-》数据的可视化 #4.1创建画布指定尺寸 plt.figure(figsize(20, 10)) #4.2设计标题 plt.title(ch) #4.3设置x的 刻度 plt.xticks(range(0, 100, 3) ) #4.4添加x轴 y轴的标签 plt.xlabel(K) plt.ylabel(ch) #4.5绘制网格 plt.grid() #4.6绘制折线图 #参1K值 参2K对应的ch值 plt.plot(range(2, 100), ch_list) plt.show()4.完整代码 SSE:只考虑簇内部 值越小越好 SC:考虑了簇内和簇间 值越大越好 CH考虑了簇内 簇间 以及K值 值越大越好 #导包 from sklearn.cluster import KMeans import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from sklearn.metrics import calinski_harabasz_score, silhouette_score import matplotlib matplotlib.use(TkAgg) # 解决后端错误 #1.演示SSE肘部法 def dm01_SSE(): #1.定义sse列表记录每个k值的SSE值 sse_list [] #生成数据 参1样本数量 参2特征数 参34个簇 参4标准差 参5随机种子 x, y make_blobs(n_samples1000, n_features2, centers[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std[0.4, 0.2, 0.2, 0.2], random_state23) #3.for循环遍历获取到每个K值计算对应的sse值并添加到sse_list 列表中 for k in range(1,100): #3.1 创建k-means对象指定K值迭代次数随机种子 estimator KMeans(n_clustersk, max_iter100, random_state23) #3.2训练模型 estimator.fit(x) #3.3模型预测 #3.4获取到每个簇的sse值 sse_value estimator.inertia_ #3.5将每个K值对应的sse添加到sse_list中 sse_list.append(sse_value) #绘制SSE曲线-》数据的可视化 #4.1创建画布指定尺寸 plt.figure(figsize(20, 10)) #4.2设计标题 plt.title(SSE) #4.3设置x的 刻度 plt.xticks(range(0, 100, 3) ) #4.4添加x轴 y轴的标签 plt.xlabel(K) plt.ylabel(SSE) #4.5绘制网格 plt.grid() #4.6绘制折线图 #参1K值 参2K对应的sse值 plt.plot(range(1, 100), sse_list) plt.show() #2.演示SC轮廓系数法 def dm02_SC(): #1.定义sc列表记录每个k值的sc值 sc_list [] #生成数据 参1样本数量 参2特征数 参34个簇 参4标准差 参5随机种子 x, y make_blobs(n_samples1000, n_features2, centers[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std[0.4, 0.2, 0.2, 0.2], random_state23) #3.for循环遍历获取到每个K值计算对应的sc值并添加到sc_list 列表中 for k in range(2, 100): #考虑簇外至少两个簇 #3.1 创建k-means对象指定K值迭代次数随机种子 estimator KMeans(n_clustersk, max_iter100, random_state23) #3.2训练模型 estimator.fit(x) #3.3模型预测 y_pred estimator.predict(x) #3.4获取到每个簇的sc值 sc_value silhouette_score(x, y_pred) #3.5将每个K值对应的sc添加到sc_list中 sc_list.append(sc_value) #绘制sc曲线-》数据的可视化 #4.1创建画布指定尺寸 plt.figure(figsize(20, 10)) #4.2设计标题 plt.title(sc) #4.3设置x的 刻度 plt.xticks(range(0, 100, 3) ) #4.4添加x轴 y轴的标签 plt.xlabel(K) plt.ylabel(sc) #4.5绘制网格 plt.grid() #4.6绘制折线图 #参1K值 参2K对应的sc值 plt.plot(range(2, 100), sc_list) plt.show() #3.演示CH轮廓系数法 def dm03_ch(): #1.定义ch列表记录每个k值的ch值 ch_list [] #生成数据 参1样本数量 参2特征数 参34个簇 参4标准差 参5随机种子 x, y make_blobs(n_samples1000, n_features2, centers[[-1, -1], [0, 0], [1, 1], [2, 2]], cluster_std[0.4, 0.2, 0.2, 0.2], random_state23) #3.for循环遍历获取到每个K值计算对应的ch值并添加到ch_list 列表中 for k in range(2, 100): #考虑簇外至少两个簇 #3.1 创建k-means对象指定K值迭代次数随机种子 estimator KMeans(n_clustersk, max_iter100, random_state23) #3.2训练模型 estimator.fit(x) #3.3模型预测 y_pred estimator.predict(x) #3.4获取到每个簇的ch值 ch_value calinski_harabasz_score(x, y_pred) #3.5将每个K值对应的ch添加到ch_list中 ch_list.append(ch_value) #绘制ch曲线-》数据的可视化 #4.1创建画布指定尺寸 plt.figure(figsize(20, 10)) #4.2设计标题 plt.title(ch) #4.3设置x的 刻度 plt.xticks(range(0, 100, 3) ) #4.4添加x轴 y轴的标签 plt.xlabel(K) plt.ylabel(ch) #4.5绘制网格 plt.grid() #4.6绘制折线图 #参1K值 参2K对应的ch值 plt.plot(range(2, 100), ch_list) plt.show() #4.测试 if __name__ __main__: #dm01_SSE() #dm02_SC() dm03_ch()三.总结加强了对于对于聚类算法评价指标的练习。
http://www.gsyq.cn/news/1357550.html

相关文章:

  • 2026年国内环保包装袋头部企业排行:合规与产能双维度评测 - 资讯焦点
  • AI写论文不用愁!4款AI论文生成工具,轻松开启论文写作之旅!
  • 【2026年华为暑期实习(AI)-5月22日-第二题- 随机森林交易风控算法】(题目+思路+JavaC++Python解析+在线测试)
  • 携程任我行礼品卡回收,目前行情+回收渠道分享! - 圆圆收
  • Topit:重新定义macOS多任务处理,300%效率提升的窗口置顶神器
  • AI写论文的法宝!4款AI论文写作工具,助力职称论文顺利通过!
  • 告别抢票焦虑!95%成功率的大麦自动抢票神器使用指南
  • Agent驱动的机器学习 pipeline 全链路拆解,深度解析LLM+ML协同训练的4大范式演进
  • 终极跨平台资源下载神器:3分钟掌握res-downloader核心用法
  • UE5库存系统设计:C++容器与DataAsset架构实践
  • 【发动机】模拟火花-点火发动机循环采用单区模型和Wiebe热释放定律求解进气压力、排气温度和燃烧分数【含Matlab源码 15556期】
  • 卡梅德生物技术快报|抗原抗体亲和力测定:基因工程抗体亲和力改造实验流程拆解,抗原抗体亲和力测定技术实现
  • 【电机】电机温度的BLDC冷却系统【含Matlab源码 15554期】
  • UE5库存系统设计:FStruct+GameplayTags数据驱动方案
  • 【限时公开】华为昇腾+寒武纪MLU双平台AI Agent边缘部署Checklist(含功耗约束下模型剪枝精度损失≤0.3%的黄金参数表)
  • Responsible AI工程化落地:从责任协议到代码实现
  • iOS SSL证书调试、SSH服务与权限控制的合规实践
  • AI Agent工具调用工程实践:从契约设计到生产治理
  • 终极指南:如何在Rockchip RK3588开发板上快速部署Ubuntu系统
  • 5步高效获取全网付费资源:res-downloader专业下载工具完全指南
  • Rshell框架实战:红队内网渗透的信道管理与双平台协同
  • 深度解析Adobe-GenP 3.0:一站式Adobe全家桶激活方案的技术实现与实战指南
  • 高效突破:一站式跨平台资源下载解决方案,轻松实现视频号批量下载
  • Unity自动保存插件实战指南:解决未保存丢失痛点
  • 【Top 3行业AI Agent数据分析失败案例】:金融/零售/制造领域92%项目卡在数据对齐与Agent可解释性上
  • 如何快速构建Windows版FFmpeg:自动化编译完整教程
  • 生产环境 Redis+MySQL 数据一致性方案
  • LXMusic音源系统架构设计:多平台音频资源聚合与异步优化方案
  • 使用Taotoken CLI工具一键配置多开发环境与团队统一接入标准
  • 高效大模型训练引擎:DDP+TP+QAT+QLoRA四层加速实战