聚类分析(二)k-means及matlab程序

article/2025/10/21 18:55:10

1.介绍
k-means是一种常见的基于划分的聚类算法。划分方法的基本思想是:给定一个有N个元组或者记录的数据集,将数据集依据样本之间的距离进行迭代分裂,划分为K个簇,其中每个簇至少包含一条实验数据。
2.k-means原理分析
2.1工作原理
(1)首先,k-means方法从数据集中随机选择K个数据中心点,每个点代表初始的聚类中心
在这里插入图片描述
(2)计算剩余各个样本到每个聚类中心的距离,将每个样本距离第i个聚类中心的较近的值赋给聚类中心i
在这里插入图片描述
分别计算器距离,容易得出随机聚类中心1离1、2、3最近,随机聚类中心2离4、5、6最近,随机聚类中心3离7、8、9最近
(3)重新计算每个聚类中心的值,对K个聚类中心的每个值进行均值划分,更新K个聚类中心的坐标位置
在这里插入图片描述
(4)直至K个聚类中心不再变化
示意图:
在这里插入图片描述
本图转自:https://blog.csdn.net/Katherine_hsr/article/details/79382249
2.2 K-means算法设计
输入:聚类的个数K,数据集,样本距离计算依据
输出:K个聚类
算法处理流程同上工作原理
3.matlab程序 (参考至机器学习周志华第9章)
数据集下载地址:https://download.csdn.net/download/sinat_38648388/10745809
3.1 matlab自主k-means编程

%% K-mens方法的matlab实现
%% 数据准备和初始化
clc
clear 
x=[0 0; 1 0; 0 1;1 1;2 1; 1 2; 2 2;3 2;6 6;7 6;8 6;6 7; 7 7;8 7;9 7;7 8;8 8;9 8;8 9;9 9];
z=zeros(2,2);
z1=zeros(2,2);
z=x(1:2,1:2);
%% 寻找聚类中心
while 1count=zeros(2,1);allsum=zeros(2,2);for i=1:20 %对每一个样本i,计算到2个聚类中心的距离temp1=sqrt((z(1,1)-x(i,1)).^2+(z(1,2)-x(i,2)).^2);temp2=sqrt((z(2,1)-x(i,1)).^2+(z(2,2)-x(i,2)).^2);if(temp1<temp2)count(1)=count(1)+1;allsum(1,1)=allsum(1,1)+x(i,1);allsum(1,2)=allsum(1,2)+x(i,2);elsecount(2)=count(2)+1;allsum(2,1)=allsum(2,1)+x(i,1);allsum(2,2)=allsum(2,2)+x(i,2);endendz1(1,1)=allsum(1,1)/count(1);z1(1,2)=allsum(1,2)/count(1);z1(2,1)=allsum(2,1)/count(2);z1(2,2)=allsum(2,2)/count(2);if(z==z1)break;elsez=z1;end
end
%% 结果显示
disp(z1);%输出聚类终须
plot(x(:,1),x(:,2),'k*',...'LineWidth',2,...'MarkerSize',10,...'MarkerEdgeColor','k',...'MarkerFaceColor',[0.5,0.5,0.5])
hold on
plot(z1(:,1),z1(:,2),'ko',...'LineWidth',2,...'MarkerSize',10,...'MarkerEdgeColor','k',...'MarkerFaceColor',[0.5,0.5,0.5])
set(gca,'linewidth',2);
xlabel('特征x1','fontsize',12);
xlabel('特征x2','fontsize',12);
title('K-means分类图','fontsize',12);

3.2matlab k-means集成函数编程
matlan中kmeans中的集成函数为kidxs=kmeans(bonds,numClust,‘distance’,dist_k);
其中bonds表示输入的数据集,numClust表示输入的类,distance表示选择样本聚类依据,类型有
: % methods = {‘euclidean’; ‘seuclidean’; ‘cityblock’; ‘chebychev’; …
% ‘mahalanobis’; ‘minkowski’; ‘cosine’; ‘correlation’; …
% ‘spearman’; ‘hamming’; ‘jaccard’};

%% 导入数据与数据预处理
clc,clear all,close all
load BondData
settle=floor(date);
%数据预处理
bondData.MaturityN=datenum(bondData.Maturity,'dd-mmm-yyyy');
bondData.settleN=settle * ones(height(bondData),1);
%筛选数据
corp=bondData(bondData.MaturityN > settle &...bondData.Type =='Corp' &...bondData.Rating >= 'CC'&...bondData.YTM < 30 &...bondData.YTM >= 0,:);
%设置随机数生成方式保证结果可重现
rng('default');
%% 探索数据
figure
gscatter(corp.Coupon,corp.YTM,corp.Rating)
set(gca,'linewidth',2);
xlabel('票面利率')
ylabel('到期收益率')
%选择聚类变量
corp.RatingNum=double(corp.Rating);
bonds=corp{:,{'Coupon','YTM','CurrentYield','RatingNum'}};
%设置类别数量
numClust=3;
%设置用于可视化聚类效果的变量
VX=[corp.Coupon,double(corp.Rating),corp.YTM];
%% k-means聚类
dist_k='cosine';
kidx=kmeans(bonds,numClust,'distance',dist_k);
%绘制聚类效果图
%z=VX(kidx(m,n));表示VX的第m个值,聚类出来的第n类
figure
%VX(kidx==m,n)代表VX中第m列,第n类
F1=plot3(VX(kidx==1,1),VX(kidx==1,2),VX(kidx==1,3),'r*',...VX(kidx==2,1),VX(kidx==2,2),VX(kidx==2,3),'bo',... VX(kidx==3,1),VX(kidx==3,2),VX(kidx==3,3),'kd' );
set(gca,'linewidth',2);
grid on;
set(F1,'linewidth',2,'MarkerSize',8);
xlabel('票面利率','fontsize',12);
ylabel('评级得分','fontsize',12);
zlabel('到期收益率','fontsize',12);
title('Kmeans方法聚类结果')%% 评估各类的相关程度
dist_metric_k=pdist(bonds,dist_k);
dd_k=squareform(dist_metric_k);
[~,idx]=sort(kidx);
dd_k=dd_k(idx,idx);
figure
imagesc(dd_k)
set(gca,'linewidth',2);
xlabel('数据点','linewidth',2);
ylabel('数据点','fontsize',12);
title('K-means聚类结果相关程度图','fontsize',12)
ylabel(colorbar,['距离矩阵:',dist_k])
axis square

http://chatgpt.dhexx.cn/article/26Q1mUnK.shtml

相关文章

数据挖掘实验(七)Matlab实现聚类算法【clusterdata / kmeans】

本文代码均已在 MATLAB R2019b 测试通过&#xff0c;如有错误&#xff0c;欢迎指正。 另外&#xff0c;这次实验都是调用Matlab现成的函数&#xff0c;没什么技术含量。 &#xff08;一&#xff09;聚类分析的原理 聚类是将数据分类到不同的类或者簇这样的一个过程&#xff…

K-means聚类 —— matlab

目录 1.简介 2.算法原理 3.实例分析 3.1 读取数据 3.2 原理推导K均值过程 3.3 自带kmeans函数求解过程 完整代码 1.简介 聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程&#xff0c;聚类就是一种发现这种内在结构的技术&#xff0c;聚类技术经常被称为…

聚类分析的Matlab 程序—系统聚类(附有案例分析)

聚类分析的Matlab 程序—系统聚类 (1)计算数据集每对元素之间的距离,对应函数为pdistw. 调用格式&#xff1a;Ypdist(X),Ypdist(X,’metric’), Ypdist(X,’distfun’),Ypdist(X,’minkowski’,p) 说明&#xff1a;X是m*n的矩阵&#xff0c;metric是计算距离的方法选项&…

如何运用MATLAB实现K-MEANS聚类分析

由于自己最近在学习聚类分析&#xff0c;也算是一个入门&#xff0c;相当于将自己这段时间的学习成果进行一个总结&#xff0c;分享给更多打算学习聚类分析或者需要用到聚类分析的同学们~ 在了解K-MEANS聚类分析之前&#xff0c;我们首先明确聚类的含义&#xff0c;聚类是将数…

Matlab实现Kmeans聚类算法

1.Kmeans聚类算法简介 kmeans聚类算法是一种迭代求解的聚类分析算法。其实现步骤如下&#xff1a; (1) 随机选取K个对象作为初始的聚类中心 (2) 计算每个对象与各个种子聚类中心之间的距离&#xff0c;把每个对象分配给距离它最近的聚类中心。 (3) 聚类中心以及分配给它们的对象…

k-means算法实例(聚类分析)matlab实现

例子如下&#xff1a; 假设数据挖掘的任务是将如下的8个点&#xff08;用&#xff08;x&#xff0c;y&#xff09;代表位置&#xff09;聚类为3个簇。 距离是欧氏距离。假设初始我们选择&#xff0c;和分别为每个簇的中心&#xff0c;用k-均值算法给出&#xff1a; a)在第一轮…

MATLAB层次聚类分析

实验题目 给出六个民族的出生死亡率&#xff0c;和他们的平均寿命&#xff0c;如下表所示 出生死亡率&#xff08;%&#xff09;平均寿命15.8070.5927.4467.1438.1165.48410.2158.8859.5159.8869.8160.47 MATLAB代码 %聚类分析 %步骤 %1.样本标准化 %2.计算各个样本之间的距…

matlab之聚类分析

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

Matlab聚类分析(Kmeans)

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

Python语音信号处理

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

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

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

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

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

前端语音信号处理

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

语音信号处理及特征提取

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

MATLAB语音信号处理系统GUI

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

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

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

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

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

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

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

语音信号处理概念

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

python做语音信号处理

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