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

matlab实现层次聚类与k-均值聚类算法

1. 原理

1.层次聚类:通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程并生成聚类树

2.k-means聚类:在数据集中根据一定策略选择K个点作为每个簇的初始中心,然后将数据划分到距离这K个点最近的簇中,重新计算每个簇的中心点,然后在重新进行划分,直到每次划分的结果保持不变。

2. 过程

1.层次聚类:

样本点:x1= [0,0]T, x2=[0,1]T,  x3=[2,0]T , x4= [3,3]T , x5= [4,4]T

将样本点存储在c1.txt文本文件中如下:

图1  c1文件中样本数据

在matlab中载入文件

分别将原始数据中的两列提取出来作为x坐标与y坐标用于绘制样本的分布图像,其实现如下:

图2

接下来通过linkage(c1,'single','euclidean')语句调用linkage函数,将样本点以最短距离作为类间距离,距离计算采用欧几里得距离,得到一个矩阵,其前2列为两个类的标号,第三列为类间的最短距离,然后通过dendrogram函数可以绘制出层次聚类树状图

图3

以上操作后结果如下:

图4 样本分布及聚类树状图

接下来为了进行分类,可以通过分割的方法得到不同的簇,这里采用群数目分割方式进行分割,调用cluster函数,设置簇的数目最大为2,最后调整标号绘制分类后的图像

图5

结果如下:

图6 分割后得到的结果

2.k-means聚类:

样本点:x1= [0,0]T,  x2=[1,0]T,  x3=[1,1]Tx4= [4,4]T,  x5=[5,4]T,  x6=[5,5]T

同样将样本点数据存储到kn1.txt文件中,如下图:

图7  kn1文件中样本数据

接下来开始进行聚类,实验设置簇的个数为2,通过kmeans函数对样本进行聚类,并且重复5次聚类,该函数可以返回簇的索引以及簇的中心点位置。

图8

然后调整标号绘制分类图像,结果如下:

图9  kmeans 聚类结果

3. 结果与分析

1.层次聚类

通过树状图可以看出程序的聚类顺序为x1x2,x4x5,x1x2x3,x1x2x3x4x5,每两个簇之间的距离如下:

图10 聚类过程中簇间距离

其中前两列1至5代表x1到x5初始5个簇,6代表x1x2形成的簇,7代表x4x5形成的簇,8代表x1x2x3形成的簇

2.k-means聚类

图11 聚类后两个簇的中心点坐标

图12 每个点到每个簇心的距离

图13 簇内各点到中心距离之和

      

相关文章:

matlab实现层次聚类与k-均值聚类算法

1. 原理 1.层次聚类:通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程并生成聚类树 2.k-means聚类:在数据集中根据一定策略选择K个点作为每个簇的初始中心,然后将数据划…...

【机器学习】包裹式特征选择之递归特征消除法

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…...

【ArcGIS】重采样栅格像元匹配问题:不同空间分辨率栅格数据统一

重采样栅格像元匹配问题:不同空间分辨率栅格数据统一 原始数据数据1:GDP分布数据2.1:人口密度数据2.2:人口总数数据3:土地利用类型 数据处理操作1:将人口密度数据投影至GDP数据(栅格数据的投影变…...

Qt 简约又简单的加载动画 第七季 音量柱风格

今天和大家分享两个音量柱风格的加载动画,这次的加载动画的最大特点就是简单,只有几行代码. 效果如下: 一共三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc…...

【JS】数值精度缺失问题解决方案

方法一&#xff1a; 保留字符串类型&#xff0c;传给后端 方法二&#xff1a; 如果涉及到计算&#xff0c;用以下方法 // 核心思想 在计算前&#xff0c;将数字乘以相同倍数&#xff0c;让他没有小数位&#xff0c;然后再进行计算&#xff0c;然后再除以相同的倍数&#xff0…...

c++基础知识补充4

单独使用词汇 using std::cout; 隐式类型转换型初始化&#xff1a;如A a1,,此时可以形象地理解为int i1;double ji;&#xff0c;此时1可以认为创建了一个值为1的临时对象&#xff0c;然后对目标对象进行赋值&#xff0c;当对象为多参数时&#xff0c;使用&#xff08;1&#xf…...

leetcode230. 二叉搜索树中第K小的元素

lletcode 230. 二叉搜索树中第K小的元素&#xff0c;链接&#xff1a;https://leetcode.cn/problems/kth-smallest-element-in-a-bst 题目描述 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 …...

医学大数据|文献阅读|有关“肠癌+机器学习”的研究记录

目录 1.机器学习算法识别结直肠癌中的免疫相关lncRNA signature 2.基于机器学习的糖酵解相关分子分类揭示了结直肠癌癌症患者预后、TME和免疫疗法的差异&#xff0c;2区7 3.整合深度学习-病理组学、放射组学和免疫评分预测结直肠癌肺转移患者术后结局 4.最新7.4分纯生信&am…...

Linux信号【systemV】

目录 前言 正文&#xff1a; 1消息队列 1.1什么是消息队列&#xff1f; 1.2消息队列的数据结构 1.3消息队列的相关接口 1.3.1创建 1.3.2释放 1.3.3发送 1.3.4接收 1.4消息队列补充 2.信号量 2.1什么是信号量 2.2互斥相关概念 2.3信号量的数据结构 2.4…...

node.js最准确历史版本下载

先进入官网:Node.js https://nodejs.org/en 嫌其他博客多可以到/release下载:Node.js,在blog后面加/release https://nodejs.org/en/blog/release/ 点击next翻页,同样的道理...

UE5 C++ 单播 多播代理 动态多播代理

一. 代理机制&#xff0c;代理也叫做委托&#xff0c;其作用就是提供一种消息机制。 发送方 &#xff0c;接收方 分别叫做 触发点和执行点。就是软件中的观察者模式的原理。 创建一个C Actor作为练习 二.单播代理 创建一个C Actor MyDeligateActor作为练习 在MyDeligateAc…...

前端学习、CSS

CSS可以嵌入到HTML中使用。 每个CSS语法包含两部分&#xff0c;选择器和应用的属性。 div用来声明针对页面上的哪些元素生效。 具体设置的属性以键值对形式表示&#xff0c;属性都在{}里&#xff0c;属性之间用;分割&#xff0c;键和值之间用:分割。 因为CSS的特殊命名风格…...

Flink基本原理 + WebUI说明 + 常见问题分析

Flink 概述 Flink 是一个用于进行大规模数据处理的开源框架&#xff0c;它提供了一个流式的数据处理 API&#xff0c;支持多种编程语言和运行时环境。Flink 的核心优点包括&#xff1a; 低延迟&#xff1a;Flink 可以在毫秒级的时间内处理数据&#xff0c;提供了低延迟的数据…...

3. 文档概述(Documentation Overview)

3. 文档概述&#xff08;Documentation Overview&#xff09; 本章节简要介绍一下Spring Boot参考文档。它包含本文档其它部分的链接。 本文档的最新版本可在 docs.spring.io/spring-boot/docs/current/reference/ 上获取。 3.1 第一步&#xff08;First Steps&#xff09; …...

【vue3 路由使用与讲解】vue-router : 简洁直观的全面介绍

# 核心内容介绍 路由跳转有两种方式&#xff1a; 声明式导航&#xff1a;<router-link :to"...">编程式导航&#xff1a;router.push(...) 或 router.replace(...) &#xff1b;两者的规则完全一致。 push(to: RouteLocationRaw): Promise<NavigationFailur…...

ubuntu创建账号和samba共享目录

新建用于登录Ubuntu图形界面的用户 sudo su #切换为root用户获取管理员权限用于新建用户 adduser username #新建用户&#xff08;例如用户名为username&#xff09; adduser username sudo #将用户添加到 sudo 组 新建只能用于命令行下登录的用户 sudo su #切换为root用户…...

李沐动手学习深度学习——3.6练习

本节直接实现了基于数学定义softmax运算的softmax函数。这可能会导致什么问题&#xff1f;提示&#xff1a;尝试计算exp(50)的大小。 可能存在超过计算机最大64位的存储&#xff0c;导致精度溢出&#xff0c;影响最终计算结果。 本节中的函数cross_entropy是根据交叉熵损失函数…...

机器学习_10、集成学习-Bagging(自举汇聚法)

Bagging&#xff08;自举汇聚法&#xff09; Bagging&#xff08;Bootstrap Aggregating&#xff0c;自举汇聚法&#xff09;是一种集成学习方法&#xff0c;由Leo Breiman于1996年提出。它旨在通过结合多个模型来提高单个预测模型的稳定性和准确性。Bagging方法特别适用于减少…...

【力扣hot100】刷题笔记Day20

前言 今天学习了一句话“自己如果不努力&#xff0c;屎都吃不上热乎的”&#xff0c;话糙理不糙&#xff0c;与君共勉 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 二分查找 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:n…...

Redis 之八:Jdeis API 的使用(Java 操作 Redis)

Jedis API 使用 Jedis 是 Redis 官方推荐的 Java 客户端&#xff0c;它提供了一套丰富的 API 来操作 Redis 服务器。通过 Jedis API&#xff0c;开发者可以方便地在 Java 应用程序中执行 Redis 的命令来实现数据的增删查改以及各种复杂的数据结构操作。 以下是一些基本的 Jedis…...

探索数据中的数学之美:PySR符号回归工具让复杂规律触手可及

探索数据中的数学之美&#xff1a;PySR符号回归工具让复杂规律触手可及 【免费下载链接】PySR High-Performance Symbolic Regression in Python and Julia 项目地址: https://gitcode.com/gh_mirrors/py/PySR 你是否曾面对海量数据却难以理解其中的内在规律&#xff1f…...

DownKyi完全指南:3步掌握B站视频下载与管理的终极技巧

DownKyi完全指南&#xff1a;3步掌握B站视频下载与管理的终极技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#…...

如何通过平台架构实现15分钟养老服务圈的精准覆盖

居家养老服务的高效落地&#xff0c;离不开精准的机构定位与便捷的信息查询支撑。智慧养老系统居家养老地图模块&#xff0c;以数字化地图为核心载体&#xff0c;整合区域内养老机构资源与老人基础信息&#xff0c;破解传统居家养老中机构查找繁琐、信息脱节、对接低效等痛点&a…...

效率提升80%:AI全流程研发真实项目落地复盘

很多开发者对AI编程的印象还停留在写片段、补代码&#xff0c;但真正落地到团队项目、需求评审、架构设计、Code Review全链路时&#xff0c;大多AI都显得“水土不服”。最近深度实践了AI全流程研发模式&#xff0c;结合行业实践与真实项目落地&#xff0c;聊一聊如何把AI从“辅…...

mysql主键设计原则_InnoDB聚簇索引对性能的影响

主键不必是自增整数但强烈推荐&#xff1b;非自增主键&#xff08;如UUID、字符串&#xff09;易引发页分裂、随机IO和索引碎片&#xff0c;增大二级索引体积并降低缓存效率&#xff1b;更新主键等于全行重建&#xff0c;必须禁止&#xff1b;无显式主键时InnoDB会生成隐藏ROW_…...

深入解析AMD Versal自适应SoC:架构革新与多场景应用指南

1. 什么是AMD Versal自适应SoC&#xff1f; 第一次接触Versal自适应SoC时&#xff0c;我完全被它的设计理念震撼到了。这不像传统FPGA那样只是可编程逻辑的堆砌&#xff0c;也不像普通SoC那样固定架构。它更像是一个"变形金刚"&#xff0c;能根据不同的应用场景动态调…...

想做5v5对战游戏?这套Unity框架直接拿来用

插件简介 Multiplayer Engine – Pro Edition 是一套面向多人游戏开发的完整解决方案&#xff0c;整合了 Unity Gaming Services、Steam 以及 PlayFab 等主流后端服务&#xff0c;支持 P2P&#xff08;点对点&#xff09;与 Dedicated Server&#xff08;专用服务器&#xff09…...

告别AD转Cadence的迷茫:OrCAD Capture CIS 16.6新建工程与环境设置保姆级指南

告别AD转Cadence的迷茫&#xff1a;OrCAD Capture CIS 16.6新建工程与环境设置保姆级指南 从Altium Designer切换到Cadence OrCAD&#xff0c;就像从自动挡汽车换到手动挡——虽然最终目的地相同&#xff0c;但操作方式截然不同。我至今记得第一次打开OrCAD时那种无处下手的窘迫…...

ESP32以太网异步HTTPS客户端库详解

1. 项目概述AsyncHTTPSRequest_ESP32_Ethernet是一个专为 ESP32 系列微控制器&#xff08;包括 ESP32、ESP32-S2、ESP32-S3、ESP32-C3&#xff09;及 WT32_ETH01 以太网开发板设计的异步 HTTPS 客户端库。其核心目标是为资源受限的嵌入式设备提供一种高效、可靠且内存友好的方式…...

Keil UV4配色进阶:不止替换文件,教你用global.prop打造专属高效编码环境

Keil UV4深度调校指南&#xff1a;从global.prop解析到现代IDE级编码环境定制 当你每天面对Keil UV4那个灰暗的默认界面时&#xff0c;是否想过这个老牌嵌入式开发工具也能拥有VS Code般的优雅体验&#xff1f;不同于简单的主题替换&#xff0c;我们将深入global.prop文件的每一…...