MATLAB层次聚类分析

article/2025/10/21 19:10:45

实验题目

给出六个民族的出生死亡率,和他们的平均寿命,如下表所示

出生死亡率(%)平均寿命
15.8070.59
27.4467.14
38.1165.48
410.2158.88
59.5159.88
69.8160.47

MATLAB代码

%聚类分析
%步骤
%1.样本标准化
%2.计算各个样本之间的距离
%3.选择合适的方式聚类
clc
clear all
close all
X = [5.80  70.597.44  67.148.11  65.4810.21 58.889.51  59.249.81  60.47];
figure;
plot (X(:,1),X(:,2),'ro','MarkerSize',8,'LineWidth',1);
xlabel('x(1)')
ylabel('x(2)')
title('原始数据')
grid on
figure
Xn = zscore(X);%标准化
Y = pdist(Xn,'euclidean');%求距离
squareform(Y)%方便查看
Z = linkage(Y,'single');%类
dendrogram(Z);%画图
xlabel('样本')
ylabel('类间距离')
title('层次聚类分析')

代码分析

zscore ():这是一个归一化的函数,是用原始数据的均值和方差来进行归一化的,可把原始数据归一化为均值为0、方差1的数据,称为z—score 标准化。这是进行聚类的重要一步,我对其的理解就是不同特征之间的量纲可能相差很大,在进行不同数据之间的距离计算时,量纲大的权重较大,一些量纲较小的可能会被忽略掉,为了避免这种情况,所以要进行归一化。其它的归一化函数还有最大最小标准化等。

pdist(): 这个函数是为了进行数据之间求距离的,输入为数组及以何种方式求距离,方式主要有欧式距离、马氏距离、曼哈顿距离、切比雪夫距离、绝对值距离,输出为每两个数据之间的距离。这一步是为了聚类做准备。本文选择的输入方式为Y = pdist(X,Distance)。

method有以下几种:

'euclidean':欧几里德距离(默认)。

'squaredeuclidean':平方欧氏距离

'seuclidean':标准化欧氏距离

'mahalanobis':Mahalanobis

'cityblock':城市街区距离。

'minkowski':明考斯基距离

'chebychev':切比切夫距离

'hamming':Hamming距离

squareform():为了方便展示个个数据之间的距离,输出为一个矩阵,例如矩阵中的位置(1,2)为第1个数据和第二个数据之间的距离。

linkage():是用指定的方法来进行层次聚类,pdist()是计算两个样本之间的距离,linkage()是用指定的方法来算类与类之间的距离,然后把距离最近的化为一个新类,在计算新类与其它类的距离,再把距离最近的化为一个新类,重复以上操作直至只有一个类。本文选择的输入方式为 Z = linkage(X,method) 。

method有以下几种:

Single:最短距离

Complete:最大距离

Average:平均距离

Centroid:重心距离

Ward:离差平方和

dendrogram():是把linkage()生成的数据画成树状图。

cluster():是根据linkage()创建分类。

不同层次聚类方法得到的实验结果图

(1)重心法

得到的树状图如图1所示

图1重心法

(2)最短距离法

图2最短距离法

(3)最长距离法

图3.最长距离法

(4)类平均法

图4.类平均法

(5)离差平方和法

图5.离差平方和法

 以上5组实验样本之间求距离的方式均为欧式距离,于是我有做了一组绝对值距离的实验,层次聚类的方法为最大距离法。实验结果如图6所示

图6.绝对值距离

实验总结

通过本次课程及实验,我对层次聚类的概念的理解不再是迷茫模糊了,而是能够对一些简单的数据进行层次聚类了,下面我以实验中的最短距离法实验为基础来阐述如何进行层次聚类。

(1)首先,得到数据后应进行数据的归一化。这是为了消除由与不同特征之间数量级相差过大的影响。就如同本实验的数据一样,出生率基本都在10以内,平均寿命基本都大于50,当去除归一化函数后得到的结果如图7所示,4和5被划为了一类,而不是其他实验的5和6为一类。这是应为4与5平均寿命的差值小于5和6的差值,平均寿命的数量级大,其在计算距离时的权重也大。这才相差一个数量级,如果数量级相差过大,那么小数量级的特征将会不起作用,分出类的可靠性也会降低。

图7.没有进行归一化的分类结果

(2)算出不同数据之间的距离。样本之间距离的计算方法有好几种,应该根据样本的特征选择合适的方法。最短距离法实验中各样本的距离如下图8所示(数组表示,(1,5)表示1和5之间的距离。)

图8.各个样本之间的距离

(3)先把每个数据当成一个类,把距离最近的两个类化为一个新类,计算该新类由其他类之间的距离。根据图8可以看出样本5和6之间的距离最近所以把5,6归为一新类7。由于层次聚类方法为最小距离法,所以类1,2,3,4和新类7之间的距离取它们各自内部的样本与5,6距离的最近值,即它们与7之间的距离分别为3.1728,1.9728,1.4484,0.4065。

(4)再把距离最近的两类归为一个新类,再计算新类与其他类之间的距离。再加入新类7后,类1,2,3,4,7之间最近的距离为4,7之间的距离,所以4,7化为新类8。根据最小距离法,类1,2,3与8之间的距离分别为3.1728,1.9728,1.4484。

(5)重复步骤(4),直至所有样本归为一个类。类1,2,3,8,之间距离最近的为2,3之间的距离0.5259,所以2,3划为新类9。根据最小距离法,类1,8与9之间的距离分别为1.2077,1.4484。而1,8之间的距离为3.1728,所以1,9划为新类10。8和10之间的距离为1.4484,它们再归为新类11,至此,所有样本归为一类,聚类结束。MATLAB中聚类过程如下图9所示,与我说的过程一致。

图9. MATLAB中聚类过程


http://chatgpt.dhexx.cn/article/QYykNesN.shtml

相关文章

matlab之聚类分析

文章目录 1.原理:2.数据:3.效果图:4.分类结果:5.分类代码: 1.原理: 聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是,组内的对象相互之间是相似的&…

Matlab聚类分析(Kmeans)

提示:本文为记录学习聚类分析的一个过程,仅供参考,有不足之处还望提出 目录 前言一、原始数据二、数据处理与结果输出1.标准化与提取2.可视化3.簇数判别4.最终输出 总结 前言 本次样本中的片段数据涉及到多个故障原因,目的在于通…

Python语音信号处理

个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-44.html 语言信息是多种信息的混合载体 ,其中包括内容信息、说话人信息和情感信息。 本文介绍了一些语音的基本知识,和使用Python进行处理。 时域…

语音信号处理1 ----- 基础知识

语音信号处理1 ----- 基础知识 1. 语音信号处理的目的:2. 语音发音和感知系统2.1 语音发音系统2.2 语音感知系统(听觉系统)2.2.1 听觉系统2.2.2 听觉特性 2.3 语音信号生成的数学模型 3. 语音基本概念及参数4. 语音信号数字化处理参考 1. 语音…

语音信号处理入门入籍和课程推荐

欢迎关注我的公众号,微信搜一搜【音频信号处理那些事儿】获取更多信息。 由于看网上关于语音信号处理的入门书籍和课程推荐的比较少,同时相关的领域人员也比较少,所以建了这个公众号,欢迎各位同仁指正交流,谢谢。 本…

前端语音信号处理

1、语音活动检测 语音活动检测(Voice Activity Detection, VAD)用于检测出语音信号的起始位置,分离出语音段和非语音(静音或噪声)段。VAD算法大致分为三类:基于阈值的VAD、基于分类器的VAD和基于…

语音信号处理及特征提取

1.信号处理基础 模拟信号->数字信号转化 步骤:采样和量化 奈奎斯特定律 :采样频率大于信号中最大频率的二倍 即在原始信号的一个周期中,至少要采样两个点,才能有效杜绝频率混叠问题。 信号进行离散傅里叶变换的条件&#x…

MATLAB语音信号处理系统GUI

基于MATLAB的语音信号处理 【摘 要】 Matlab语音信号处理是指利用matlab软件对音频信号进行读取,并对音频信号进行采样分析及离散傅里叶变换,以方便对其在频域上进行调制滤波等相关的操作。本次实验在提取音频信号后会对该信号使用在MATLAB软件中设计的…

《语音信号处理》 语音识别章节 读书笔记

两本书,《语音信号处理》赵力编和《语音信号处理》韩纪庆编。强烈推荐韩纪庆版本,知识点很全面,可以作为语音识别的入门中文书籍,章节很也短,很快就入门了。 P34 HMM是一个双内嵌式随机过程,由两个随机过程…

基于MATLAB的语音信号处理系统的设计

目 录 摘 要 I Abstract II 1 绪论 1 2 语音信号处理系统设计方案 2 2.1MATLAB的说明 2 2.2系统框架及实现流程图 2 2.2.1系统框架: 2 2.2.2系统流程图: 3 2.3语音信号处理相关原理知识 3 2.3.1语音信号的录入与打开 3 2.3.2采样位数和采样频率 3 2.3.3…

语音信号处理的一些基础知识

人耳的听觉掩蔽效应 一般人可以感觉到20Hz-20kHz,强度为5dB-130dB。 人耳的掩蔽效应:在一个强信号附近,弱信号将变得不可闻,被掩蔽掉了。被掩蔽的不可闻信号的最大声压级称为掩蔽门限或者掩蔽阈值。 语音信号生成的模型 理想的模…

语音信号处理概念

语音交互 你知道苹果手机有几个麦克风吗? 语音交互(VUI)是指人与人/设备通过自然语音进行信息传递的过程。 语音交互的优势: 输入效率高。语音输入的速度是传统键盘输入方式的3倍以上。例如:语音电视选台、远场语音交…

python做语音信号处理

作者:凌逆战 时间:2019年11月1日 博客园地址:python做语音信号处理 - 凌逆战 - 博客园 音频信号的读写、播放及录音 python已经支持WAV格式的书写,而实时的声音输入输出需要安装pyAudio(PyAudio: PortAudio v19 Python Bindings…

语音信号处理知识点

语音信号处理过程的总体结构: 语音输入-->预处理-->数字化-->特征提取 预处理:对信号适当放大和增益控制,并进行反混叠滤波来消除工频信号干扰 数字化:进行A/D转换 特征提取:用反映语音信号特点的若干参数…

第一章 语音信号处理概述

一、语音交互 语音交互(VUI: Voice User Interface)是指人与人或者人与设备通过自然语音进行信息传递的过程。 1. 语音交互的优势 (1)输入效率高:相对于键盘输入,语音输入的速度是传统输入方式的3倍以上(有权威统计分析得到的数…

语音信号处理-python

语音信号处理 1.语音信号的产生与特性 我们要对语音进行分析,首先要提取能够表示该语音的特征参数,有了特征参数才可能利用这些参数进行有效的处理,在对语音信号处理的过程中,语音信号的质量不仅取决于处理方法,同时…

python实验六 语音信号处理

目录 实验目的: 实验原理: 实验准备: 实验步骤与内容: 参考代码: 实验目的: 依托语音信号处理领域的声学特征提取任务,学习常用的语音信号处理工具,实现对语音数据的预处理和常…

matlab的语音信号处理

人类交换信息最方便的、最快捷的一种方式是语言,在高度发达的信息社会中,用数字化的方法进行语音的识别、合成、增强、传送和储存等是整个数字化通信网中最重要、最基本的组成部分之一。数字电话通信、高音质的窄带语音通信系统、智能机器人、声控打字机…

语音信号处理 —— 笔记(一)音频信号处理

声音的产生 :能量通过声带使其振动产生一股基声音,这个基声音通过声道 ,与声道发生相互作用产生共振声音,基声音与共振声音一起传播出去。 一、音频信号简介 1.声音波形图 传感器以某种频率探测声音的振幅强度以及振动方向&…

语音信号处理的过程及其应用

一、语音信号处理的过程 在信号处理领域,信息加工和处理的一般流程下图所示。 在语音信号的具体情况下,信息源就是说话的人,通过观察和测量得到的就是语音的波形。信号处理包括以下几个内容,首先根据一个给定的模型得到这一信号的…