m基于kmeans和Cmeans算法的数据聚类仿真分析

简介: m基于kmeans和Cmeans算法的数据聚类仿真分析

1.算法描述

   K-means聚类算法是硬聚类算法,是典型的基于原型的目标函数聚类分析算法点到原型——簇中心的某种距离和作为优化的目标函数,采用函数求极值的方法得到迭代运算的调整规则。K-means聚类算法以欧氏距离作为相异性测度它是求对应某一初始聚类中心向量 最优分类,使得评价指标E值最小。K-means聚类算法采用误差平方和准则函数作为聚类准则函数,误差平方和准则函数定义为:

image.png

   分析误差平方和准则函数可以看出E是样本与聚类中心差异度之和的函数,样本集X给定的情况下E的值取决于c个聚类中心。E描述n个样本聚类成c个类时所产生的总的误差平方和。显然,若E值越大,说明误差越大,聚类结果越不好。因此,我们应该寻求使E值最小的聚类结果,即误差平方和准则的最优结果。这种聚类通常称为最小误差划分。

   分析误差平方和准则函数可以看出E是样本与聚类中心差异度之和的函数,样本集X给定的情况下E的值取决于c个聚类中心。E描述n个样本聚类成c个类时所产生的总的误差平方和。显然,若E值越大,说明误差越大,聚类结果越不好。因此,我们应该寻求使E值最小的聚类结果,即误差平方和准则的最优结果。这种聚类通常称为最小误差划分。

   整个算法的基本流程如下图所示:

image.png

   上述算法流程图说明,K-means算法首先需要初始化,即随机选择K个点作为聚类中心点;然后开始做循环操作,根据簇中对象的平均值,将每个对象赋给最类似的簇;然后开始更新簇的平均值,即计算每个对象簇中对象的平均值,

   从上面的算法思想和流程,不难看出,k个初始聚类中心点的选取对聚类结果具有较大的影响,因为在该算法中是随机地任意选取k个点作为初始聚类中心,初始的代表一个簇。如果有先验知识,可以选取具有代表性的点。

    整个算法的复杂度为O(mkt),整个数据集中的对象数为m;把整个数据集划分为k类;聚类过程中的迭代次数为t;要求k<m。该算法对于数据集中的数据实际类型间有明显差别,聚类的效果比较好,对于差别不是很大的,聚类结果可能有一定的误差。

   首先计算整个数据集合的平均值点,作为第一个初始聚类中心C1;

   然后分别计算所有对象到C1的欧式距离d,并且计算每个对象在半径R的范围内包含的对象个数W。

   此时计算P=u*d+(1-u)*W,所得到的最大的P值所对应的的对象作为第二个初始聚类中心C2。

   同样的方法,分别计算所有对象到C2的欧式距离d,并且计算每个对象在半径R的范围内包含的对象个数W,所得到的最大的P值所对应的的对象作为第二个初始聚类中心C3。

   从这三个初始聚类中心开始聚类划分。对于一个待分类的对象,计算它到现有聚类中心的距离,若(这个距离)<(现有各个聚类中心距离的最小值),则将这个待分类对象分到与它相距最近的那一类;如果(这个距离)>(现有各个聚类中心距离的最小值),则这个待分类对象就自成一类,成为一个新的聚类中心,然后对所有对象重新归类。

    如果找到新的聚类中心,在重新计算聚类的中心后。对目前形成的K+1 个聚类计算 DBInew 的值,和未重新分配对象到这 k+1 个类之前计算的 DBIold进行比较,如果 DBInew <DBIold,则这个新找到的聚类中心可以作为新的聚类中心,否则将终止本次查找 k 的工作,并恢复到 DBIold 的状态。当所有这样符合新类产生条件的数据对象的 DBI 值都大于 DBIold 时,则确定再没有新的类产生,则确定了最终聚类个数为 k,可以进行最终的分配对象工作。

2.仿真效果预览
matlab2022a仿真结果如下:

image.png
image.png
image.png

3.MATLAB核心程序

Feature          = zeros(size(Dat));
Feature(:,2:end) = Dat(:,2:end);  
 
KCluster         = 6;
X                = Feature(:,2:end);
 
cidx             = func_cmeans(X',KCluster);
 
Feature(:,1)     = cidx'; 
 
%计算五列重的权值最大的两个
W                = mean(X,1);
[V,I]            = sort(W);
%选择权值最大的两个进行画图
K1=I(end);
K2=I(end-1);
 
figure;
plot(X(cidx==1,K1),X(cidx==1,K2),'ro', ...
     X(cidx==2,K1),X(cidx==2,K2),'bo', ...
     X(cidx==3,K1),X(cidx==3,K2),'ko', ...
     X(cidx==4,K1),X(cidx==4,K2),'mo', ...
     X(cidx==5,K1),X(cidx==5,K2),'mo', ...
     X(cidx==6,K1),X(cidx==6,K2),'co');
hold on;
 
if KCluster == 2
   legend('类别1','类别2','聚类中心点');
end
if KCluster == 3
   legend('类别1','类别2','类别3','聚类中心点');
end
if KCluster == 4
   legend('类别1','类别2','类别3','类别4','聚类中心点');
end
if KCluster == 5
   legend('类别1','类别2','类别3','类别4','类别5','聚类中心点');
end
if KCluster == 6
   legend('类别1','类别2','类别3','类别4','类别5','类别6','聚类中心点');
end
相关文章
|
3天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
4天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
4天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。
|
2天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
1天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
5月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
97 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
106 4
数据分析的 10 个最佳 Python 库
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
270 4
|
5月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
106 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
2月前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。