matlab 层次聚类

2023-10-26

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法:
1.层次聚类 hierarchical clustering

2.k-means聚类

这里用最简单的实例说明以下层次聚类原理和应用发法。

层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步:

(1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征对象之间差异的距离,例如最简单的平面上点的聚类中,最经常使用的就是欧几里得距离。

这在MATLAB中可以通过Y=pdist(X)实现,例如

>> X=randn(6,2)
X =
    -0.4326     1.1892
    -1.6656    -0.0376
     0.1253     0.3273
     0.2877     0.1746
    -1.1465    -0.1867
     1.1909     0.7258
>> plot(X(:,1),X(:,2),'bo')    %给个图,将来对照聚类结果把

在这里插入图片描述````
Y=pdist(x)

Y =

1 至 14 列
0.7728 0.4994 0.9336 0.6606 0.3346 0.6789 0.2830 0.1381 0.7942 0.9444 0.5422 0.7887 0.4075 0.8513
15 列
0.7286
````
例子中X数据集可以看作包含6个平面数据点,pdist之后的Y是一个行向量,15个元素分别代表X的第1点与2-6点、第2点与3-6点,…这样的距离。那么对于M个点的数据集X,pdist之后的Y

将是具有M*(M-1)/2个元素的行向量。Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转换成方阵形式,方阵中<i,j>位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是个对角元素为0的对称阵。
squareform(Y)

ans =

     0    0.7728    0.4994    0.9336    0.6606    0.3346
0.7728         0    0.6789    0.2830    0.1381    0.7942
0.4994    0.6789         0    0.9444    0.5422    0.7887
0.9336    0.2830    0.9444         0    0.4075    0.8513
0.6606    0.1381    0.5422    0.4075         0    0.7286
0.3346    0.7942    0.7887    0.8513    0.7286         0

这里需要注意的是,pdist可以使用多种参数,指定不同的距离算法。help pdist把。
另外,当数据规模很大时,可以想象pdist产生的Y占用内存将是很吓人的,比如X有10k个数据点,那么X占10k82Bytes=160K,这看起来不算啥,但是pdist后的Y会有10k10k/28Bytes=400M。怕了把,所以,废话说在前面,用MATLAB的层次聚类来处理大规模数据,大概是很不合适的。
确定好了对象间的差异度(距离)后,就可以用Z=linkage(Y)来产生层次聚类树了。

>> Z=linkage(Y)
>Z=linkage(Y)

Z =

    2.0000    5.0000    0.1381
    4.0000    7.0000    0.2830
    1.0000    6.0000    0.3346
    3.0000    9.0000    0.4994
    8.0000   10.0000    0.5422

对于M个元素的X,前面说了Y是1行M*(M-1)/2的行向量,Z则是(M-1)*3的矩阵。
Z数组的前两列是索引下标列,最后一列是距离列。例如上例中表示在产生聚类树的计算过程中,第3和第4点先聚成一类,他们之间的距离是0.2228,以此类推。要注意的是,为了标记每一个节点,需要给新产生的聚类也安排一个标识,MATLAB中会将新产生的聚类依次用M+1,M+2,…依次来标识。比如第3和第4点聚成的类以后就用7来标识,第2和第5点聚成的类用8来标识,依次类推。
通过linkage函数计算之后,实际上二叉树式的聚类已经完成了。Z这个数据数组不太好看,可以用dendrogram(Z)来可视化聚类树。
在这里插入图片描述
可以看到,产生的聚类树的每一层都是一个倒置的U型(或者说是个n型,~~),纵轴高度代表了当前聚类中两个子节点之间的距离。横轴上标记出了各个数据点索引下标。
稍微注意以下的是,dendrogram默认最多画30个最底层节点,当然可是设置参数改变这个限制,比如dendrogram(Z,0)就会把所有数据点索引下标都标出来,但对于成千上万的数据集合,这样的结果必然是图形下方非常拥挤。看你的应用目的了,随你玩~

(3)初步的聚类树画完后,还要做很多后期工作的,包括这样的聚类是不是可靠,是不是代表了实际的对象分化模式,对于具体的应用,应该怎样认识这个完全版的聚类树,产生具有较少分叉的可供决策参考的分类结果呢?这都是需要考虑的。

MATLAB中提供了cluster, clusterdata, cophenet, inconsistent等相关函数。

cluster用于剪裁完全版的聚类树,产生具有一定cutoff的可用于参考的树。
clusterdata可以认为是pdist,linkage,cluster的综合,当然更简易一点。
cophenet和inconsistent用来计算某些系数,前者用于检验一定算法下产生的二叉聚类树和实际

情况的相符程度(就是检测二叉聚类树中各元素间的距离和pdist计算产生的实际的距离之间有

多大的相关性),inconsistent则是量化某个层次的聚类上的节点间的差异性(可用于作为

cluster的剪裁标准)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab 层次聚类 的相关文章

  • 作为一个上班族,有哪些Python兼职项目?兼顾练手和创收?

    普通人学Python有意义吗 Python作为一种跨平台的计算机程序设计语言 近些年来越来越受到企业和IT从业者的青睐 那么 普通人是否需要学习Python呢 学会Python有什么意义呢 今天小编就和大家聊一聊这个话题 Python有效提
  • 爬虫写得好,‘劳烦’吃得饱

    前言 提起 爬虫 总有一丝神秘色彩 大家都调侃 爬虫写得好 劳烦 吃得饱 虽然是 高危职业 但在大数据横行的年代 爬虫与反爬虫的需求却在猛烈增加 他们的关系就像矛与盾 越来越多的公司造 矛 发起攻势 获取数据 又或者在造 盾 封锁信息 这种
  • 现代博弈论与多智能体强化学习系统

    如今 大多数人工智能 AI 系统都是基于处理任务的单个代理 或者在对抗模型的情况下 是一些相互竞争以改善系统整体行为的代理 然而 现实世界中的许多认知问题是大群人建立的知识的结果 以自动驾驶汽车场景为例 任何座席的决策都是场景中许多其他座席
  • Python共生矩阵对比奇异值分解 (SVD)和词嵌入

    词嵌入 词嵌入是转换成数字的文本 同一文本可能有不同的数字表示 许多机器学习算法和几乎所有深度学习架构都无法处理原始形式的字符串或纯文本 它们需要数字作为输入来执行任何类型的工作 从广义上讲是分类 回归等 不同类型的词嵌入可以大致分为两类
  • 主流ETL工具汇总

    一 kettle 说明 是国外开源ETL工具 支持数据库 FTP 文件 rest接口 hdfs hive等平台的灵敏据进行抽取 转换 传输等操作 Java编写跨平台 C S架构 不支持浏览器模式 特点 易用性 有可视化设计器进行可视化操作
  • 收藏!关于数据科学中数学和统计学的完全指南

    全文共6409字 预计学习时长19分钟 图源 Unsplash 数据科学家是程序员中最擅长统计学 统计学家中最擅长编程的人 乔什 威尔斯 Josh Wills 数学很重要 数学与我们周围的一切事物息息相关 从形状 图案 颜色到花朵中花瓣的数
  • 【Pycharm教程】推荐一些 PyCharm 中常用的插件

    工欲善其事 必先利其器 PyCharm 上面的插件是非常实用的 能够巧妙的使用插件对于我们的开发功能的帮助非常大 下面我为大家推荐一些不错的插件 1 Key Promoter X 快捷键 用来提示快捷键的插件 帮助我们尽可能的摆脱鼠标操作
  • Neo4j 快速入门

    Neo4j 快速入门 neo4j 官方文档 https neo4j com docs neo4j 中文社区 http neo4j com cn neo4j 开发者页面 https neo4j com developer Neo4j安装 a
  • 时间序列分析教程(二):移动平均与指数平滑

    之前介绍了时间序列的基本概念和性质 现在就正式介绍一些处理时间序列的模型方法 第一个是移动平均法 移动平均法很简单 就是用最近的数据预测未来短时间内的数据 有简单移动平均法 真的很简单 就是用最近的一组数据 去平均 作为下一时刻的预测 S
  • 【数据科学】肯德尔等级相关系数( Kendall's tau coefficient )

    在统计学中 Kendall等级相关系数 通常称为Kendall的tau系数 在希腊字母 之后 是用于测量两个测量量之间的序数关联的统计量 甲tau蛋白测试是一种非参数假设检验用于基于所述tau蛋白系数统计依赖性 它是衡量等级相关 数据的排序
  • R语言编程 R语言作业

    一 40 分 请使用 nycflight13 回答以下问题 1 请用 flights 表单找出出发时间没有延误 但是到达时间的所有航班 2 在 1 数据的基础上计算到达每个目的地的航班数量 平均飞行距离和平 均到达延误时间 3 在 2 的基
  • 时间序列分析-电视广告呼入次数预测

    案例 电视广告呼入次数预测 import pandas as pd import numpy as np np random seed 1206 import matplotlib pyplot as plt matplotlib inli
  • 对比分析:SFrame,Hdp2与skflow,谁更好呢?

    数据科学必备少不了一些框架和库 今天我们大圣众包小编为大家对比分析下SFrame Hdp2与skflow 看看这三个哪个更好呢 1 SFrame 这家公司最初的名字叫graphlab 后来改名为dato 最近又进行了一次改名 叫turi了
  • Python统计模型探索性数据分析(EDA)系统(单变量-双变量-相关性-缺失值)

    单变量分析 单变量分析旨在更深入地了解单个列 它创建该列的各种统计数据和可视化 例如 要深入了解 特征 year built 要计算year built 的最小值 最大值 不同计数 中值 方差 并创建一个箱线图来检查异常值 一个正常的 Q
  • 【数据异常校验】肖维勒准则(Chauvenet Criterion)处理异常数据

    介绍 在统计理论中 肖维勒准则 以William Chauvenet命名 是评估一组实验数据 一组异常值 是否可能是虚假的一种手段 肖维勒准则背后的想法是找到一个以正态分布的均值为中心的概率带 它应该合理地包含数据集的所有n个样本 通过这样
  • 华为出品Python入门教程:从零基础入门到精通,这一篇就够了

    前言 本文罗列了了python零基础入门到精通的详细教程 内容均以知识目录的形式展开 01 python由来与发展介绍 02 项目开发流程 第一章 markdown编辑器 01 markdown基本语法 02 Typora简介与安装 03
  • 聚类分析:原型K-Means/K-Means++聚类、层次聚类;密度聚类DBSCAN

    聚类分析 处理无标签数据 from IPython display import Image matplotlib inline 1 使用K Means方法按照相似度对对象进行分组 1 1使用sklearn实现K Means聚类 from
  • 【数学建模】灰度预测之关联度求解

    灰度预测适用范围 在实际中 若得到的是离散的 规律性不强的数据 此时线性回归就不适用了 我们需要采用灰度预测的方法 灰度预测法则是一种对含有不确定因素的系统进行预测的方法 白色系统 黑色系统 灰色系统 白色系统 指一个系统的内部特征是完全已
  • 【数据挖掘】数据挖掘比赛项目-kaggle泰坦尼克号

    数据挖掘实战项目 kaggle泰坦尼克号生还者预测 ing kaggle泰坦尼克号生还者预测 泰坦尼克号 从灾难中学习机器 kaggle网站连接 链接 https www kaggle com c titanic 一 实战项目描述 1 项目
  • pandas学习笔记--增加行或列

    一 增加行 1 loc 想增加一行 行名称为 5 内容为 16 17 18 19 df loc 5 16 17 18 19 后面的序列是Iterable就行 2 at df at 5 16 17 18 19 3 set value df s

随机推荐

  • 【自学51单片机】5 --- 定时器介绍、数码管静态显示、逻辑运算符和逻辑电路符号

    文章目录 1 逻辑运算和逻辑电路 1 1 C语言逻辑运算符 1 2 逻辑电路符号 2 定时器学习 重点非难点 2 1 时钟周期和机器周期的介绍 2 2 定时器的介绍 2 2 1 定时器寄存器介绍 2 2 2 定时器模式工作电路逻辑图 2 3
  • github可以做文件服务器吗,局域网搭建git服务端并使用Github Desktop作为客户端

    在使用了github的客户端软件Github Desktop之后 感受到了git的便捷 研究了一下与svn的区别之后 结合目前的团队情况 决定下个项目开始使用git 整理一下 这里服务端为centos 6 5 客户端为mac 一 服务端安装
  • Mysql 架构图

    Mysql 架构图 第一层 对客户端的连接处理 安全认证 授权等 每个客户端连接都会在服务端拥有一个线程 每个连接发起的查询都会在对应的单独线程中执行 第二层 MySQL的核心服务功能层 包括查询解析 分析 查询缓存 内置函数 存储过程 触
  • 电脑怎样执行编程语言的?

    链接 https www zhihu com question 29227521 answer 154819061 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 这个问题真的是很大 让我们自顶向下的解释 在
  • 2023华为OD机试真题【最大利润/贪心算法】

    题目描述 商人经营一家店铺 有number 种商品 由于仓库限制每件商品的最大持有数量是 item index 每种商品的价格是 price item index day 通过对商品的买进和卖出获取利润 请给出商人在 days 天内能获取的
  • 在Windows10下使用GPU安装TensorFlow

    1 安装Python和pip 在Windows环境安装Python 3 x版本 通常安装包中集成了pip工具 安装会非常简单方便 具体见 https www python org downloads windows 按以上网站的信息 获取到
  • tomcat端口号被占用

    这里有两种方法 第一个是通过命令窗口终止 第二个是使用任务管理器 1 端口被占用 可以用cmd window R 第一步 输入netstat ano 找到被占用的端口号 netstat ano 也可以输入netstat aon findst
  • matlab和stata,Stata和Matlab联合处理金融数据

    Stata是统计学专业软件 可以很方便的对数据处理 但几乎只能按照整行整列进行 而且每次只能加载一个矩阵 dta文件 如果要用到多个矩阵数据进行操作或进行复杂的循环控制 就力不从心了 而Matlab工业界广泛使用的数据分析处理工具 对矩阵支
  • 8、OpenCV调整图像对比度和亮度

    OpenCV调整图像对比度和亮度 一 学习目标 二 原理理解 三 对比度 亮度调整 四 完整代码示例 一 学习目标 理解图像对比度和亮度调整的原理 对比三种不同亮度和对比度调整方法 二 原理理解 1 对比度 对比度指的是一幅图像中明暗区域最
  • docker启动命令,docker重启命令,docker关闭命令

    一 docker服务的命令 启动 systemctl start docker 守护进程重启 systemctl daemon reload 重启docker服务 systemctl restart docker service docke
  • VS2019智能感知、代码折叠超慢问题解决实例

    CUDA Nsight VS 插件引起的智能感知问题解决 今天使用VS2019的时候 发现智能感知 代码折叠都莫名的慢 也不是一点都不会来 就是超慢 感觉要10秒以上才会显示 点个点需要等上好久才会出来 怎么重置都没用 换新用户也没用 想想
  • eclipse打开new新建没有java project

    自己通过上网学习安装了eclipse 在安装和使用过程中遇到的问题及解决办法会进行记录 希望可以帮助跟我遇到相同问题的你们哦 这些解决办法 也是我百度找到的 分享给大家 我的eclipse之前已经装过了 昨天在学习接口测试要用到eclips
  • ELK通过logstash采集java日志(多图演示)

    ELK 不是一款软件 而是 Elasticsearch Logstash 和 Kibana 三种软件产品的首字母缩写 这三者都是开源软件 通常配合使用 而且又先后归于 Elastic co 公司名下 所以被简称为 ELK Stack 根据
  • 大牛总结超详细的RabbitMQ入门,看这篇文章就够了!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情提示 二 ack机制回顾 三 ack机制实现原理 delivery tag 四 RabbitMQ如何感知仓储服务实例宕机 五 仓储服务处理失败时的消息重
  • VS异常:文件乱码:文件加载,使用Unicode(UTF-8)编码加载文件xxx时,有些字节已用Unicode替换字符替换。保存该文件将不会保留原始文件内容。

    参考 https blog csdn net bugang4663 article details 110408633 今天在使用vs打开一个项目的时候发现部分文件突然乱码了 上午打开的时候还没发现 点击部分cs文件的时候出现下面异常提醒
  • SD卡两种操作模式在项目中应用的比较

    1 SDIO接口传输速度比SPI接口传输速度快 2 STM32的SDIO口还真的不好用 特别是4BIT的方式 我都纠结了好久了 用1BIT的方式倒是可以 速度大概可以到读2M字节每秒 STM32F205 SDIO DMA 因为项目要最低5M
  • linux入门系列11--Centos7网络服务管理

    通过前面文章的学习已经掌握了Linux系统配置管理的知识 本文讲解Centos7网络配置知识 Linux要对外提供服务 需要保证网络通信正常 因此需要正确配置网络参数 本文将讲解如何使用Network Manager配置网络参数 管理网络会
  • 短视频dy(某音)高版本最新最全4种抓包方案,第1种让你秒破QUIC协议,破解抓包难题,看我这一篇就够了!

    一 前言 一般大多数网站 APP最常用的是http https协议 而某两款最火的短视频dy 某音 ks 某手 最新版使用的是quic协议 见附录1 导致fiddler和charles无法直接抓到包 某音app 13 5版本以下可以直接抓到
  • Hive性能调优策略

    利用分区表优化 场景 在业务环境中 以某个字段为筛选条件的需求增加 解决方法 建立以这个字段为分区的分区表 这样进行查询时只需要指定这个分区就不再需要进行全表扫描 利用分桶表优化 场景 需要频繁进行采样 解决方法 分桶表会使用hash算法将
  • matlab 层次聚类

    MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法 1 层次聚类 hierarchical clustering 2 k means聚类 这里用最简单的实例说明以下层次聚类原理和应用发法 层次聚类是基于距离的聚类方法 MAT