创新应用2:nnmf+DBO+K-Medoids聚类,蜣螂优化算法DBO优化K-Medoids,适合学习和发paper。

创新应用2nnmf+DBO+K-Medoids聚类,蜣螂优化算法DBO优化K-Medoids,适合学习和发paper

一、蜣螂优化算法

摘要:受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发,提出了一种新的基于种群的优化算法(Dung Beetle Optimizer, DBO)。新提出的DBO算法兼顾了全局探索和局部开发,具有收敛速度快和求解精度高的特点。采用一系列著名的数学测试函数(包括23个基准函数和29个CEC-BC-2017测试函数)来评估DBO算法的搜索能力。仿真实验结果表明,DBO算法在收敛速度、求解精度和稳定性方面均表现出与当前主流优化算法相当的性能。此外,采用Wilcoxon符号秩检验和Friedman检验对算法的实验结果进行评估,证明了DBO算法相对于当前流行的其他优化技术的优越性。为了进一步说明DBO算法的实际应用潜力,将DBO算法成功应用于3个工程设计问题。实验结果表明,所提DBO算法能够有效地处理实际应用问题。

文献来源:Dung beetle optimizer: a new meta-heuristic algorithm for global optimization。

DOI:10.1007/s11227-022-04959-6。

二、K-Medoids聚类

K-Medoids是一种聚类算法,类似于K-Means,但在选择聚类中心时采用了不同的策略。K-Medoids旨在将数据集中的对象划分成K个簇,这些簇是通过最小化样本点到簇中心(或称为medoids)的距离来确定的。与K-Means使用簇的均值作为簇中心不同,K-Medoids选取簇内的对象作为中心,通常选择的是使得簇内其它点到此中心点的距离总和最小的点。

K-Medoids聚类算法的主要特点和步骤如下:

1、特点:K-Medoids比K-Means更鲁棒,因为它选取实际存在于数据集中的点作为中心,而不是计算得到的均值。这使得算法对噪声和异常值更为稳健。

2、算法步骤:

初始化:随机选取K个对象作为初始medoids。

分配阶段:将每个对象分配给最近的medoid,基于给定的距离度量(如欧氏距离、曼哈顿距离等)。

更新阶段:对于每个簇,选取一个对象作为新的medoid,这个对象是使得簇内其他所有点到它的距离之和最小的点。

重复分配和更新步骤,直到medoids不再发生变化,或者达到了预设的迭代次数。

3、距离度量:K-Medoids算法可以使用多种距离度量,这使得它适用于不同类型的数据集。

4、应用场景:K-Medoids广泛应用于需要稳健聚类方法的领域,如生物信息学、图像分割、市场细分等。

5、限制:尽管K-Medoids对异常值具有较好的抵抗力,但其计算成本相对较高,尤其是在处理大规模数据集时。这是因为在每次迭代中,都需要计算所有点到每个medoid的距离。

6、变体:有几种K-Medoids算法的变体,最著名的是PAM(Partitioning Around Medoids)和CLARA(Clustering LARge Applications)。PAM适用于处理小到中等规模的数据集,而CLARA通过抽样来克服PAM在大规模数据集上的计算问题。

K-Medoids算法是聚类分析中一个重要的工具,尤其是在需要考虑异常值影响时。尽管存在计算成本高的限制,但其在多个领域内都展示了良好的应用潜力。

三、非负矩阵分解(NNMF或NMF)

非负矩阵分解(NNMF或NMF)是一种数据降维和特征提取技术,它能够将一个非负矩阵分解为两个或多个较低维度的非负矩阵的乘积。NMF的关键特点是分解得到的矩阵的所有元素都是非负的,这使得NMF特别适合于处理那些只包含非负元素的数据集,例如图像的像素强度、文本的词频等。

四、nnmf+DBO+K-Medoids聚类

✨ 核心亮点

降维至精华:我们首先使用nnmf将复杂的数据集降维到3维,保留了数据的主要信息,使其可视化变得简单直观。

优化聚类:接着,采用蜣螂优化算法DBO对K-Medoids聚类进行优化,利用轮廓系数信息构建目标函数,自动寻找最佳的聚类数量和距离度量,以达到最优的数据分组效果。

聚类数量k:可以修改聚类数量优化范围

选择三个距离度量进行优化:sqeuclidean(欧氏距离平方)、cityblock(Block距离,也叫绝对值距离)、cosine(夹角余弦)。

代码详细中文注释,高效管理,可读性和二次开发都很好,部分代码如下:

clc; clear; close all;% 加载Excel数据
data = xlsread('数据.xlsx');Dim=3;    %设置降维数	
Z=nnmf(data,Dim);     %nnmf非负矩阵分解% 初始化DBO参数
N = 10; % 种群数量
T = 50; % 最大迭代次数
LB=[2,1]; % 变量下界
UB=[20,3]; % 变量上界
nvars=length(LB);
fobj=@fitness;% 使用DBO优化算法优化K-Medoids进行聚类,优化最佳聚类数和最佳距离度量
[fMin,index,Convergence_curve,pos]=DBO(N,T,LB,UB,nvars,fobj,data,Z); % 计算轮廓系数
sc_xishu = mean(silhouette(data, index'));% 确定独特的聚类数
a = unique(index);
op_cluster_num = length(a); % 优化后聚类个数
C = cell(1, length(a));% 将数据分配到对应聚类
for i = 1:length(a)C(1, i) = {find(index == a(i))};
end% 分类标签
legend_str = strsplit('类别1,类别2,类别3', ',');% 绘制每个聚类的数据点
for i = 1:op_cluster_numdata_cluster = Z(C{1, i}, :);plot3(data_cluster(:, 1), data_cluster(:, 2),data_cluster(:, 3), 'p', 'LineWidth', 2, 'MarkerSize', 5); hold on;
end% 确保图例中聚类标签的数量与实际相符
if(length(legend_str) < op_cluster_num)for i = length(legend_str):op_cluster_numlegend_str{1, i} = ['类别', num2str(i)];end
end% 设置图表属性
set(gca, 'FontSize', 12)
title('蜣螂优化算法DBO优化K-Medoids')
axis tight
box on
xlabel('X')
ylabel('Y')
legend(legend_str)figure(2)
% 绘制收敛曲线
semilogy(Convergence_curve,'-r','LineWidth',2)
title('蜣螂优化算法DBO优化K-Medoids收敛曲线')
xlabel('迭代次数');
ylabel('适应度值');
axis tight
box on
legend('DBO优化K-Medoids')
set(gca, 'FontSize', 10)% 优化结果输出
distance_str={'sqeuclidean','cityblock','cosine'};
disp('蜣螂优化算法DBO优化K-Medoids聚类: ');
disp(['最佳聚类数: ',num2str(round(pos(1)))])
disp(['最佳距离度量: ',distance_str{1,round(pos(2))}])

运行结果如下:

蜣螂优化算法DBO优化K-Medoids结果:

蜣螂优化算法DBO优化K-means收敛曲线:

优化结果输出:

使用数据如下:

五、完整代码获取

nnmf+DBO+K-Medoids聚类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多个图片怎么变成一张动图?一个方法在线操作

如何将图片变成gif动画&#xff1f;gif动图文件体积、画面丰富兼容性也比较高。通过多张静图就能够制作一张gif动画&#xff0c;能够自己制作生动有趣的gif动态图片能更好的传达信息。只需要使用在线图片合成&#xff08;https://www.gif.cn/&#xff09;工具&#xff0c;上传j…

【C语言基础】:字符函数和字符串函数

文章目录 一、字符函数1. 字符分类函数2. 字符转化函数 二、字符串函数1. strlen函数的使用和模拟实现strlen函数的使用strlen函数的模拟实现 2. strcpy函数的使用和模拟实现strcpy函数的使用strcpy函数的模拟实现 3. strcat函数的使用和模拟实现strcat函数的使用strcat函数的模…

el-table树形数据序号排序处理

1&#xff0c;用下面这个代码可以实现基本表格的序号排序 <el-table-column label"序号" width"50px" align"center"><template slot-scope"scope">{{ scope.$index 1 }}</template></el-table-column>2&…

【LeetCode热题100】104. 二叉树的最大深度(二叉树)

一.题目要求 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二.题目难度 简单 三.输入样例 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&am…

训练数据集(一):真实场景下采集的煤矸石目标检测数据集,可直接用于YOLOv5/v6/v7/v8训练

文章目录 数据集介绍数据集训练精度展示数据集获取方式 数据集介绍 煤矸石训练数据集&#xff1a;891张&#xff1b;验证数据数据集&#xff1a;404张 数据集类别&#xff1a;0代表煤炭&#xff08;coal&#xff09;&#xff0c;1代表矸石&#xff08;gangue&#xff09;&…

Git reset命令后如何恢复到最新版本

文章目录 Git reset命令后如何恢复到最新版本使用git reflog命令使用git checkout命令 总结 Git reset命令后如何恢复到最新版本 Git reset命令后&#xff0c;可以使用以下两种方法恢复到最新版本&#xff1a; 使用git reflog命令 git reflog该命令可以查看所有Git操作的记录…

【C语言】比较两个字符串大小,strcmp函数

目录 一&#xff0c;strcmp函数 1&#xff0c;strcmp函数 2&#xff0c;函数头文件&#xff1a; 3&#xff0c;函数原型&#xff1a; 4&#xff0c;返回取值&#xff1a; 二&#xff0c;代码实现 三&#xff0c;小结 一&#xff0c;strcmp函数 1&#xff0c;strcmp函数 …

docxTemplater——从word模板生成docx文件

官网文档&#xff1a;Get Started (Browser) | docxtemplater 官网在线演示&#xff1a;Demo of Docxtemplater with all modules active | docxtemplater 源码&#xff1a;https://github.com/open-xml-templating/docxtemplater 不仅可以处理word&#xff08;免费&#xf…

【ArcGIS 脚本工具】强制移动要素类,绕过空间参考不一致

作为一个合格的数据管家&#xff0c;自然要让自己的数据库井井有条。 于是想着整理一下数据库里面的七零八落的要素类&#xff0c;按 数据库-要素数据集-要素类 的方式整理。 但是将要素类移动到要素数据集内的时候经常会出现下面的报错。 这大概率是因为要素类的坐标系与目标…

使用ChatGPT高效完成简历制作[中篇2]-有爱AI实战教程(九)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、导读&#xff1a; 在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c…

0301taildir-source报错-flume-大数据

1 基础环境简介 linux系统&#xff1a;centos&#xff0c;前置安装&#xff1a;jdk、hadoop、zookeeper、kafka&#xff0c;版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务kafka3.0分…

【Docker】使用Docker部署IT运维管理平台CAT

作者怀揣着一个美好的愿景&#xff0c;旨在提升管理效率、推动开源项目的蓬勃发展。 来一杯咖啡与茶&#xff0c;为 IT 运维从业者减轻管理负担&#xff0c;提升管理效率&#xff0c;从繁重无序的工作中解压出来&#xff0c;利用剩余时间多喝一杯休息一下。 这是一个专为 IT 运…

windows安装prometheus和grafana

prometheus官网 grafana 软件下载 prometheus windows_exporter https://github.com/prometheus-community/windows_exporter grafana prometheus原理 配置prometheus 解压之后prometheus-2.50.1.windows-amd64.zip修改prometheus.yml localhost修改为127.0.0.1 双击p…

爬虫神器!使用Python一键下载网页图片,省时高效!

引言 爬虫技术在当今信息时代中扮演着重要的角色&#xff0c;可以自动化获取互联网上的数据。本教程将围绕你提供的Python爬虫代码展开&#xff0c;旨在实现自动下载图片的功能。通过这个示例&#xff0c;你将学习如何利用爬虫技术批量获取网页中的图片&#xff0c;并将其保存…

Python下有关CV的一些算法和函数

目录&#xff1a; 1. HoughCircles二级目录三级目录 1. HoughCircles 霍夫圆检测 二级目录 三级目录

Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …

docker 安装minio,详细图解

废话不多说&#xff0c;直接上干货 docker 安装minio 拉取镜像 docker pull minio/minio创建数据目录、配置目录 mkdir /opt/minio/data mkdir /opt/minio/config启动容器 docker run -p 9000:9000 -p 9090:9090 \--name minio \-d --restartalways \-e "MINIO_ACCESS_KE…

[LLM]大语言模型文本生成—解码策略(Top-k Top-p Temperature)

{"top_k": 5,"temperature": 0.8,"num_beams": 1,"top_p": 0.75,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好","role": "user&…

【递归专题】【蓝桥杯备考训练】:有序分数、正则问题、带分数、约数之和、分形之城【已更新完成】

目录 1、有序分数&#xff08;usaco training 2.1&#xff09; 2、正则问题&#xff08;第八届蓝桥杯省赛C A组 & Java A组&#xff09; 3、带分数&#xff08;第四届蓝桥杯省赛Java A组/B组 & C B组/C组&#xff09; 4、约数之和&#xff08;《算法竞赛进阶指南》…

图形学 总结 - 老是忘

渲染流水线&#xff1a; 1、首先相机摆放到场景一个位置和角度&#xff0c;场景的各个物体也已经被摆放好 2、拿到场景物体的顶点信息&#xff0c;根据顶点信息构成图元 3、经过透视投影&#xff0c;将图元转化为2*2的正方形&#xff0c;再把2*2的正方形扩展到屏幕大小 4、…