12.11实验七:K 均值聚类算法实现与测试

news/2024/12/12 15:12:04/文章来源:https://www.cnblogs.com/yindantong/p/18602551

 

 

一、实验目的

深入理解 K 均值聚类算法的算法原理,进而理解无监督学习的意义,能够使用 Python语言实现 K 均值聚类算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

二、实验内容

 

1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注意同分布取样);

2)使用训练集训练 K 均值聚类算法,类别数为 3

3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选择;

4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验七的部分。

 

三、算法步骤、代码、及结果

   1. 算法伪代码

开始

 

   数据集 = load_iris()

 

   特征 = 数据集.data

   标签 = 数据集.target

 

   训练集特征, 测试集特征, 训练集标签, 测试集标签 = train_test_split(特征, 标签, 测试集比例=1/3, 随机种子=42, 同分布取样)

 

   模型 = KMeans(类别数=3, 随机种子=42)

 

   模型.fit(训练集特征)

 

   指标 = {

       '准确度': accuracy_score,

       '精度': precision_score(加权平均),

       '召回率': recall_score(加权平均),

       'F1': f1_score(加权平均)

   }

 

   对于 每个指标 指标 :

       交叉验证得分 = cross_val_score(模型, 训练集特征, 训练集标签, 折数=5, 评分=指标)

       输出(指标 + " : " + 交叉验证得分的平均值)

 

   预测结果 = 模型.predict(测试集特征)

 

   报告 = classification_report(测试集标签, 预测结果)

   输出(报告)

 

结束

   2. 算法主要代码

完整源代码\调用库方法(函数参数说明)

'''

Created on 20241212

 

@author: 席酒

'''

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split, cross_val_score

from sklearn.cluster import KMeans

from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score, classification_report

 

# 加载 iris 数据集

iris = load_iris()

X = iris.data

y = iris.target

 

# 使用留出法将数据集分为训练集和测试集,测试集占 1/3

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, stratify=y)

 

# 创建 KMeans 模型,类别数为 3

kmeans = KMeans(n_clusters=3, random_state=42)

 

# 使用训练集进行训练

kmeans.fit(X_train)

 

# 定义评估指标

scoring = {

'accuracy': make_scorer(accuracy_score),

'precision': make_scorer(precision_score, average='weighted'),

'recall': make_scorer(recall_score, average='weighted'),

'f1': make_scorer(f1_score, average='weighted')

}

 

# 进行五折交叉验证

scores = {metric: cross_val_score(kmeans, X_train, y_train, cv=5, scoring=scoring[metric]) for metric in scoring}

 

# 输出每个指标的平均值

for metric, score in scores.items():

print(f"{metric} : {score.mean():.4f} ± {score.std():.4f}")

 

# 使用测试集进行预测

y_pred = kmeans.predict(X_test)

 

# 输出分类报告

report = classification_report(y_test, y_pred)

print(report)

 

 

 

   3. 训练结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1

 

 

 

四、实验结果分析

1. 测试结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1

 

 2. 对比分析

 K 均值聚类算法在此数据集上的表现不佳,可能是因为该算法主要用于无监督学习,而 iris 数据集的标签信息未能有效利用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851409.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微前端到底应该怎么学?

以目前的时代来说,微前端并不算是一个很新的概念了,微前端的本质就是大型应用的拆分与关联。在我刚开始学微前端的时候,就接触到了如下的概念:比如基座式微应用、自组织式微应用,或者微前端的实现方案比如:路由分发、iframe、应用微服务化、微件化、微应用化等等。如果你…

HTML学习第二天案例练习

无序列表的使用: 实现效果:注册信息 实现效果:

2024 DataGrip安装使用教程(附激活,常见问题分析)

第一步:下载 DataGrip 安装包 访问DataGrip官网,下载DataGrip第二步: 安装 DataGrip下载完成后,进行安装,next,安装完成点击xx 关掉程序! 第三步: 下载补丁 DataGrip补丁文件 点击获取补丁下载成功后,打开标注的文件文件夹 , 进入到文件夹 /jetbra 注意: 这个文件夹单…

硬盘开盘数据恢复是什么意思?硬盘坏了不识别数据能恢复吗?

硬盘不小心摔坏了或突发故障,插入电脑没反应识别不了,通电后还有咯哒咯哒敲盘异响的声音,咨询电脑维修公司或数据恢复中心基本都会被告知需要开盘恢复数据。什么是硬盘开盘数据恢复?狭义的讲,开盘就是在无尘室把硬盘拆解打开,更换新磁头的过程。广义理解则是在无尘室更换…

突破续航瓶颈:数字样机技术引领新能源汽车复合制动新方向

​随着我国经济快速发展和人民生活水平不断提升,汽车保有量截至2023年9月底就已达到了3.3亿,同比增长6.32%。庞大的汽车保有量对我国的环境和能源都产生了巨大的压力,具备节能环保优势的新能源汽车对于有效解决环境恶化和能源危机问题具有重要意义。自2009年大力推动新能源汽…

2024年如何通过Risk Matrix进行项目风险评估?有效管理风险的方法

在项目管理中,风险评估和管理是至关重要的环节。随着时间的推移,新的挑战不断涌现,我们需要更加高效和精准的方法来应对项目风险。2024 年,Risk Matrix(风险矩阵)成为了众多项目管理者青睐的工具,它能够帮助我们系统地评估风险,并制定有效的风险管理策略。一、Risk Mat…

靶场命令执行及绕过小记

使用的是DVWA的靶场进行命令执行 简单难度非常容易进行命令执行,加上&符,可同步进行其他命令, 中级的dvwa命令执行,只过滤了&&,可以通过其他的进行绕过 高级难度命令执行过滤了大部分的管道符替换为空 但是可以通过管道符的空格进行绕过

结合 Docker,快速掌握 Nginx 2 大核心用法

Nginx 是流行的服务器,一般用它对静态资源做托管、对动态资源做反向代理。 Docker 是流行的容器技术,里面可以跑任何服务。 那 Docker + Nginx 如何结合使用呢? 我们来试一下: 首先要下载 Docker,直接安装 Docker Desktop 就行:它是用来管理容器和镜像的:安装它之后,do…

独轮滑板 -博客园

声明此文档中的信息来自群消息和群主凝望大佬的指导,我整理了下,翻聊天记录太痛苦了.方便大家.如有错误请提出我改正. 免责声明 :对于不明确的或错误导致的损失不负责哦. 组装 第一步,先把法兰安装在梁里面.就那两个菱形片片.其他垫片不要第二步,把电池延长线以及灯线那个板头的…

双十二特别企划:与园子、小懒共启AI开发新时代!

基于共同的技术信仰和对开发者的承诺,园子和小懒一拍即合,决定携手合作。双12来临之际,我们以更优惠的价格+更丰富的权益,正式推出博客园&Chat2DB联合会员点击下方链接👇👇👇立即前往开启AI之旅: https://cnblogs.vip 如有任何问题,请扫描下方客服二维码联系我…

如何使用SOLIDWORKS绘制圣诞树讲座预约

最新一期的线上讲座预约开始啦,本期内容将为大家演示使用SOLIDWORKS绘制圣诞树的操作流程,扫描页尾二维码即可预约,免费观看,欢迎参与。 讲座方式:视频号直播 报名方式:扫描页尾二维码预约 讲座时间:12月20日 14:00 有奖活动 圣诞节将至,为此SoldKits推出一期有奖互动小…

RoPE论文阅读笔记

复数几何意义:https://zhuanlan.zhihu.com/p/646598747 https://zhuanlan.zhihu.com/p/359502624 Motivation & Abs 作者提出了旋转位置编码( Rotary Position Embedding, RoPE) 的新方法来有效利用位置信息。RoPE使用旋转矩阵对绝对位置进行编码,同时在自注意公式中纳…