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

article/2025/10/21 18:45:37

例子如下:
假设数据挖掘的任务是将如下的8个点(用(x,y)代表位置)聚类为3个簇。
在这里插入图片描述

距离是欧氏距离。假设初始我们选择,和分别为每个簇的中心,用k-均值算法给出:
a)在第一轮执行后的3个簇中心
b)最后的三个簇

算法思想:

算法:k-均值。用于划分的k-均值算法,其中每个簇的中心都用簇中所有对象的均值来表示。
输入:
k:簇的数目
D:包含n个对象的数据集
输出:k个簇的集合。
方法:
(1)从D中任意选择k个对象作为初始簇中心;
(2)repeat
(3)根据簇中对象的均值,将每个对象分配到最相似的簇;
(4)更新簇均值,即重新计算每个簇中对象的均值;
(3)until不再发生变化

对于本例:

1)簇的数目k确定为:3;
2)D:数据存储在mydata.xlsx 表格当中;
3)选择第1,4,7位置的点位置作为初始簇中心;
4)距离函数:采用欧式距离

数据放置

1)需要和matlab函数文件放在同一文件夹之下,或者自己改路径
2)取名:mydata.xlsx
3)放在sheet1(创建的表格第一页默认就是这个,不用改)
4)如图在这里插入图片描述

对于问题(a):

结果及代码如下:

%%
clc; close all; clear
%%数据初始化(x1,y1)
data=xlsread("mydata.xlsx","Sheet1","B2:C9");%%选取的A1,B1,C1作为簇的初始中心
A=data(1,:);
B=data(4,:);
C=data(7,:);%%第一轮执行后的三个簇中心
dis=[];        %距离矩阵
D=[];
label=[];       %每个点的归属,取值123,分别表示A,B,C
[m,n]=size(data);
for i=1:mfor j=1:mD(i,j)=sqrt((data(i,1)-data(j,1))^2+(data(i,2)-data(j,2))^2);end
end
dis=[D(1,:);D(4,:);D(7,:)];
[~,order]=sort(dis);
label=order(1,:);%%新的簇中心center1=[];center2=[];center3=[];for i=1:mif label(i)==1center1=[center1;data(i,:)];endif label(i)==2center2=[center2;data(i,:)];endif label(i)==3center3=[center3;data(i,:)];endendA=mean(center1,1);B=mean(center2,1);C=mean(center3,1);%%数据可视化
gscatter(data(:,1),data(:,2),label)
title("第一次迭代后的k-means聚类结果")
xlabel("x坐标")
ylabel("y坐标")

结果得到:
簇中心的坐标为:
在这里插入图片描述
每个簇中包含的点:
在这里插入图片描述

可视化结果:
在这里插入图片描述

对于问题(b)

多数代码还是基于问题(a)的逻辑来做的,下面贴上代码和结果:

%%
clc; close all; clear
%%数据初始化(x1,y1)
data=xlsread("mydata.xlsx","Sheet1","B2:C9");%%选取的A1,B1,C1作为簇的初始中心
A=data(1,:);
B=data(4,:);
C=data(7,:);%%第一轮执行后的三个簇中心
dis=[];        %距离矩阵
D=[];
label=[];       %每个点的归属,取值123,分别表示A,B,C
[m,n]=size(data);
for i=1:mfor j=1:mD(i,j)=sqrt((data(i,1)-data(j,1))^2+(data(i,2)-data(j,2))^2);end
end
dis=[D(1,:);D(4,:);D(7,:)];
[~,order]=sort(dis);
label=order(1,:);%%开始迭代
count=0;
while(true)count=count+1;%%新的簇中心center1=[];center2=[];center3=[];for i=1:mif label(i)==1center1=[center1;data(i,:)];endif label(i)==2center2=[center2;data(i,:)];endif label(i)==3center3=[center3;data(i,:)];endend%%如果结果保持稳定,则退出循环if (isequal(A,mean(center1,1))&&isequal(B,mean(center2,1))&&isequal(C,mean(center3,1)))breakendA=mean(center1,1);B=mean(center2,1);C=mean(center3,1);D=[];dis=[];[m,n]=size(data);for i=1:mD(1,i)=sqrt((data(i,1)-A(1,1))^2+(data(i,2)-A(1,2))^2);D(2,i)=sqrt((data(i,1)-B(1,1))^2+(data(i,2)-B(1,2))^2);D(3,i)=sqrt((data(i,1)-C(1,1))^2+(data(i,2)-C(1,2))^2);enddis=D;[~,order]=sort(dis);label=order(1,:);
end%%数据可视化
% plot(center1(:,1),center1(:,2),'r0',center2(:,1),center2(:,2),'k*',center3(:,1),center3(:,2),'b-')
gscatter(data(:,1),data(:,2),label)
title(count+"次迭代后的k-means聚类结果")
xlabel("x坐标")
ylabel("y坐标")

一共迭代了4次
簇中心的坐标:
在这里插入图片描述

每个簇中包含的点:
在这里插入图片描述

可视化结果:
在这里插入图片描述

小结

祝愿大家学习相关算法上如鱼得水,上述哪里如果有问题的话,还请指教。
希望大家共创知无不言言无不尽的氛围。
以上


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

相关文章

MATLAB层次聚类分析

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

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.声音波形图 传感器以某种频率探测声音的振幅强度以及振动方向&…