【高性能计算】基于K均值的划分聚类实验

news2024/11/16 15:44:48

【高性能计算】基于K均值的划分聚类实验

  • 实验目的
  • 实验内容
  • 实验步骤
  • 1、k均值聚类算法
    • 1.1 k均值聚类算法的基本思想
    • 1.2 k均值聚类算法的聚类过程
    • 1.3 k均值聚类算法的算法叙述
  • 2、使用Python语言编写k均值聚类算法的源程序代码并分析其分类原理
    • 2.1 读取文件数据并进行可视化
    • 2.2 利用k均值算法对数据集进行聚类和可视化
    • 2.3 数据校正
      • 2.3.1 第一次数据校正
      • 2.3.2 第二次数据校正
    • 2.4 精度得分
  • 实验小结


实验目的

  1. 运用Python语言对多种格式数据进行读取;
  2. 描述基于K均值模型的整个聚类过程;

实验内容

  1. 使用Python语言读取事先标定的示例数据;
  2. 从sklearn中导入K均值模型并对模型进行训练;
  3. 对K均值模型进行分类性能评估和优化。

实验步骤

1、k均值聚类算法

1.1 k均值聚类算法的基本思想

       k均值聚类是基于样本集合划分的聚类算法。k均值聚类将样本集合划分为k个子集,构成k个类,将n个样本分到k个类中,每个样本到期所属类的中心的距离最小。每个样本只能属于一个类,所以k均值聚类是硬聚类。下面分别介绍k均值聚类的模型、策略、算法。
       k均值聚类的算法是一个迭代的过程,每一次迭代包括2个步骤。首先选择k个类的中心,将样本逐个指派到与其最近的中心的类中,得到一个聚类结果;然后更新每个类的样本的均值,作为类的新中新;重复以上步骤,直到收敛为止。


1.2 k均值聚类算法的聚类过程

k均值聚类算法的聚类过程主要包括以下几个步骤:
1、首先假设有k个聚类中心点,这些聚类中心点可以是从数据集随机选择的数据点。
2、对于一个给定的数据集,将每个数据点与距离其最近的聚类中心点相关联,从而将数据点分配给不同的聚类。
3、根据聚类中分配的数据点计算聚类中心点的平均值,并将该聚类中心点移动到该平均值处。
4、重复步骤2和3,直到聚类中心点不再变化,或达到预定的迭代次数。
5、最后,所有数据点将被分配到归属于它们所在的聚类中心点。


1.3 k均值聚类算法的算法叙述

输入:n个样本的集合X;
输出:样本集合的聚类C*。
具体实现过程:
1、初始化。令t=0,随机选择k个样本点作为初始聚类中心 。
2、对样本进行聚类。对固定的类中心,计算每个样本到类中心的距离,将每个样本指派到与其最近的中心的类中,构成聚类结果 。
3、计算新的类中心。对聚类结果 ,计算当前各个类中的样本的均值 。
4、如果迭代收敛或符合停止条件(中心点不再变化),输出 ,否则,返回step(2)。


2、使用Python语言编写k均值聚类算法的源程序代码并分析其分类原理


2.1 读取文件数据并进行可视化

       使用pandas模块中的read_csv()函数读取"data.csv"文件,将数据集存储在一个DataFrame对象data中。
       通过调用drop()方法,删除data中的"labels"列,将特征值存储在X中,并将标签值存储在Y中。
       调用pd.value_counts()函数统计标签的种类及数量,并将结果输出到屏幕上。
       使用matplotlib模块中的pyplot子模块,绘制关于V1和V2的散点图。其中,plt.scatter()函数用于绘制散点图,plt.title()、plt.xlabel()和plt.ylabel()函数分别用于设置图表的标题、横坐标名称和纵坐标名称。最后通过plt.legend()函数添加图例,表明不同标签所代表的颜色。最后通过plt.show()函数显示图形。图1为将读取文件数据可视化后的结果:

图1 文件数据可视化


2.2 利用k均值算法对数据集进行聚类和可视化

       利用KMeans算法对数据集进行聚类,并对聚类结果进行可视化展示,具体步骤如下:
1、首先,使用sklearn.cluster模块中的KMeans类,创建一个KM对象。通过n_clusters参数指定聚类个数为3,通过random_state参数设置随机种子。
2、调用fit()方法,对数据集X进行聚类。
3、通过cluster_centers_属性获取聚类中心点的坐标,并将其存储在centers变量中。
4、通过matplotlib模块中的pyplot子模块,绘制关于V1和V2的散点图。
5、调用predict()方法,预测数据点所属的聚类标签,并用pd.value_counts()函数打印每个聚类的数据点数量。图2为聚类过程中的核心代码。

图2  聚类过程中的核心代码
       这段代码主要是对数据集X进行了KMeans聚类操作,设置聚类数为3(即将数据划分为3个类别),并通过random_state参数设置了聚类初始化的随机数种子,保证每次运行程序时KMeans聚类结果的可重现性。


2.3 数据校正

2.3.1 第一次数据校正

       对数据进行了第一次校正,将 y_corrected 变量初始化为 y_predict,然后针对 y_corrected 中的值进行修改,使得簇的标签值发生变化。图3为第一次数据校正的代码。

在这里插入图片描述
       对聚类结果进行一次校正,将y_predict中标签为0和1的数据点的标签互换(因为原始数据集中标签0和1被反过来打上了标签)。图4为第一次数据校正结果。

在这里插入图片描述


2.3.2 第二次数据校正

       使用pandas模块中的value_counts()函数,计算每个标签在y_corrected数组中的出现次数,并打印结果。
       将y_corrected转换为numpy数组类型,并使用sklearn.metrics模块中的accuracy_score()函数,计算真实标签Y和校正后的标签y_corrected之间的精度,并将结果存储在accuracy_corrected变量中。图4为第二次数据校正的代码。

在这里插入图片描述

       对第一次聚类结果进行二次校正,将y_predict中标签为0、1和2的数据点的标签互换(因为原始数据集中标签0、1和2被反过来打上了标签)。图5为第二次数据校正的结果。

在这里插入图片描述


2.4 精度得分

       使用pandas模块中的value_counts()函数,计算每个标签在y_corrected数组中的出现次数,并打印结果。在上述两次数据校正过程中输出了两个数据,分别为accuracy_original,accuracy_corrected。图7为两个精度得分。
图7 两次精度得分


实验小结

       通过本次实验,我能够熟练叙述K均值聚类算法的基本思想;描述K均值聚类的整个聚类过程。可以根据实验内容完成使用Python语言编写K均值聚类的源程序代码并分析其分类原理。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
K均值聚类算法的优缺点:
优点:
1、属于无监督学习,无须准备训练集。
2、原理简单,实现起来较为容易。
3、结果可解释性较好。
缺点:
1、K 值需要预先给定,属于预先知识,很多情况下 K 值的估计是非常困难的,对于像计算全部微信用户的交往圈这样的场景就完全没有办法用 K-means 进行。此外,不合理的 k 值会使结果缺乏解释性。
2、K-means 算法对初始选取的聚类中心点比较敏感,不同的随机种子点得到的聚类结果完全不同;
3、该算法并不适合所有的数据类型。它不能处理非球形簇、不同尺寸和不同密度的簇,且对于异常点和离群点较为敏感;
4、易陷入局部最优解,在大规模数据集上收敛较慢。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐系统中的EE算法

人生中有很多选择问题,当每天中午吃饭的时候,需要选择吃饭的餐馆,那么就面临一个选择,是选择熟悉的好吃的餐馆呢,还是冒风险选择一个没有尝试过的餐馆呢。同样的,推荐系统处处也面临着这样的选择&#xff0…

操作系统 复习-计算题

一. 计算题(共5题,100分) 1.(计算题) 假设有4个进程需要在单CPU上运行,它们的执行时间如下表所示: 进程ID执行时间P18P25P32P44 现在我们需要按照抢占式优先级调度算法来安排这些进程的执行顺序。其中,进…

云原生之深入解析Kubernetes应用包管理器Helm的保姆级教程和实战

一、Helm 简介 ① 什么是 Helm? 我们可以将 Helm 看作 Kubernetes 下的 apt-get/yum,Helm 是 kubernetes 的包管理器,Helm 仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如 hub.dock…

【新星计划·2023】Linux内核、发行版讲解,它们有什么区别?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、Linux内核版 二、Linux发行版 1、Debian 2、Slackware 3、Red Hat 4、Gentoo 三、内核版和发行版的区别 1、内核版 2、发行…

【Java高级语法】(十一)枚举类:还在因为使用了魔法数而被老大怼吗,一起来看看枚举器的作用吧!~

Java高级语法详解之枚举类 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用🔍 Enum类的常用方法 4️⃣ 特征5️⃣ 应用场景🌾 总结 1️⃣ 概念 Java枚举类(Enumerator)是在Java 5中引入的新特性,以提供一种更好的方式来表示固定…

TestOne自动化测试日志自动分类算法,帮助用户快速处理执行错误!

自动化测试的每次执行,都会产生大量的日志信息。特别是当执行发生错误,比如数据库异常、通讯异常等情况的时候,大量执行的自动化测试用例会报错。 实际上,很多错误的类型是比较类似的,但由于测试用例的数量很大&#x…

Goby 漏洞发布|泛微E-office协同办公系统 download.php 文件 filename 参数文件读取漏洞

漏洞名称:泛微E-office协同办公系统 download.php 文件 filename 参数文件读取漏洞 English Name:maxView Storage Manager dynamiccontent.properties.xhtml RCE CVSS core: 5.0 影响资产数:4971 漏洞描述: 泛微E-office协同…

餐饮点餐外卖小程序软件开发

餐饮点餐外卖小程序是一种基于微信平台的,提供在线点餐、外卖配送等服务的应用程序。以下是可能有助于餐饮点餐外卖小程序软件开发的功能: 商品展示:提供菜品分类、搜索、详情等功能,让用户可以方便快捷地查看商品信息。 …

研发效能平台的“双流”模型

本文摘于《软件研发效能权威指南》——第 9 章 核心观点 开发人员在多个“单点式”工具平台之间的来回切换是很耗费时间和精力的。“一站式”是指把研发各个环节的软件工程能力集成在一个统一的平台上,对新人友好,对老人提效。“一键式”是指让研发工程…

【流光溢彩】物联网入门 - ESP8266 + WS2812B 制作流光溢彩灯带

一、硬件准备 ESP8266 模块 x1WS2812B 灯带(60/米,根据显示器四周长度买即可) x1杜邦线 若干DC 电源 x1 二、软件准备 1. ESP8266 串口驱动 一般购买详情页都会有写,没有就找商家要一个。 一般是 CH340 或者 CP2102&#xff0c…

在 C4D 和 Redshift 中设置程序变形鸡尾酒动画

今天瑞云渲染小编给大家带来动画设计师 Victor V. 分享的 Pick Your Weapon 项目背后的工作流程,展示了 Cinema 4D 工作流程,并解释了动画是如何在 Redshift 中渲染的。 介绍 我是 Victor,我是居住在意大利的智利动画设计师,一年…

Xcode 14.3.1 (14E300c) 下载 - Apple 平台 IDE

Xcode 14.3.1 (14E300c) 下载 - Apple 平台 IDE Command Line Tools for Xcode 14, tvOS 16 & watchOS 9 Simulator Runtime 请访问原文链接:https://sysin.org/blog/apple-xcode-14/,查看最新版。原创作品,转载请保留出处。 作者主页…

基于Confluent Kafka部署Kafka Connect集群,Kafka Connect集群加载debezium插件

基于Confluent Kafka部署Kafka Connect集群,Kafka Connect集群加载debezium插件 一、下载Confluent Kafka二、配置文件connect-distributed.properties三、启动脚本connect-distributed四、启动Kafka Connect集群五、加载debezium插件六、总结和延伸 一、下载Conflu…

leetcode39. 组合总和(回溯算法-java)

组合总和 leetcode39. 组合总和题目描述解题思路代码演示 回溯算法专题 leetcode39. 组合总和 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/combination-sum 题目描述 给你一个 无重复元素 的整数数组 candidates 和一…

浏览器跨域限制:为什么浏览器不能跨域发送Ajax请求?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是跨域请求&am…

什么是虚拟展厅?教您快速打造一个3D元宇宙虚拟展厅

引言: 在如今的数字化时代,虚拟展厅和3D元宇宙成为了展示和推广产品、品牌以及创意的新兴方式。虚拟展厅为企业带来了无限的可能性,如何快速打造一个3D元宇宙虚拟展厅成了许多企业想了解的。 一.虚拟展厅的魅力 1.什么是虚拟展厅…

BUUCTF刷题十一道(07)

文章目录 [Zer0pts2020]Can you guess it?[CISCN2019 华北赛区 Day1 Web2]ikun[GWCTF 2019]枯燥的抽奖[WUSTCTF2020]CV Maker[NCTF2019]True XML cookbook[RCTF2015]EasySQL[CISCN2019 华北赛区 Day1 Web1]Dropbox[CISCN2019 华北赛区 Day1 Web5]CyberPunk[红明谷CTF 2021]wri…

防汛四级应急响应启动,尾矿库如何安全度过汛期?

国家防总办公室向上海、江苏、浙江、安徽、江西、河南、湖北、湖南、广西、重庆、四川、贵州、云南等省份防指下发通知,要求全面压实以地方行政首长负责制为核心的各项防汛责任,加强精准监测预报和会商研判,落实好“叫应”机制,确…

我把一句话需求交给AI,它竟然给我返回了……

👉腾小云导读 也许你经历过这种情况:产品和设计同学用一句话就把需求说完了,你抓破脑袋做出来的版本又达不到他们的要求。不如尝试让 AI 承担痛苦,让它理解、拆解并实现一句话需求?本篇作者尝试提出一个自动配置可视化…

踩坑:Vue3 中的watch监视属性

文章目录 一、问题一:reactive 定义的响应式数据无 oldValue问题分析解决 二、问题二:watch默认开启了深度监视且无法关闭问题分析解决 一、问题一:reactive 定义的响应式数据无 oldValue 问题 监视 reactive 所定义的一个响应式数据&#…