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

news/2024/5/20 7:02:05 标签: 机器学习, 人工智能, 聚类, 算法, matlab

创新应用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_num
    data_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_num
        legend_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.niftyadmin.cn/n/5436792.html

相关文章

elk收集k8s微服务日志

一、前言 使用filebeat自动发现收集k8s的pod日志&#xff0c;这里分别收集前端的nginx日志&#xff0c;还有后端的服务java日志&#xff0c;所有格式都是用json格式&#xff0c;建议还是需要让开发人员去输出java的日志为json&#xff0c;logstash分割java日志为json格式&#…

SpringMVC | SpringMVC中的“JSON数据交互“ 和“RESTful支持“

目录: 1.JSON 数据交互1.1 JSON概述1.2 JSON的“数据结构”对象结构数组结构 1.3 JSON的“数据转换” (JSON交互) 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#xff01; 该文章参考学习教…

HarmonyOS NEXT应用开发之Web获取相机拍照图片案例

介绍 本示例介绍如何在HTML页面中拉起原生相机进行拍照&#xff0c;并获取返回的图片。 效果预览图 使用说明 点击HTML页面中的选择文件按钮&#xff0c;拉起原生相机进行拍照。完成拍照后&#xff0c;将图片在HTML的img标签中显示。 实现思路 添加Web组件&#xff0c;设置…

pytorch升级打怪(四)

数据加工&#xff08;转变数据&#xff09; transformsToTensor转换和增强图像 Lambda变换 transforms 数据并不总是以训练机器学习算法所需的最终处理形式出现。我们使用转换来对数据进行一些操作&#xff0c;并使其适合训练。 所有TorchVision数据集都有两个参数-transform…

力扣-283. 移动零

文章目录 力扣题目代码第一种做法第二种做法 力扣题目 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,1…

MacOS本地使用Docker Desktop 搭建Minio容器

1. 下载docker Desktop docker官网&#xff1a;https://www.docker.com/products/docker-desktop/ 根据自己的型号进行选择&#xff0c;我的M系列芯片&#xff0c;选择的是Apple-Chip&#xff0c;记得需要看到最后噢&#xff01; 最后有坑点解决办法&#xff01; 最后有坑点解…

华为配置终端定位基本实验配置

配置终端定位基本示例 组网图形 图1 配置终端定位基本服务示例 组网需求数据准备配置思路配置注意事项操作步骤配置文件 组网需求 如图1所示&#xff0c;某公司网络中&#xff0c;中心AP直接与RU连接。 管理员希望通过RU收集Wi-Fi终端信息&#xff0c;并提供给定位服务器进行定…

蓝桥杯练习01卡片化标签

卡片化标签页 介绍 选项卡功能在前端开发中特别常见&#xff0c;作为设置选项的模块&#xff0c;每个选项卡代表一个活动的区域&#xff0c;点击不同的区域&#xff0c;即可展现不同的内容&#xff0c;这样既能节约页面的空间又能提升页面性能。 本题需要在已提供的基础项目中…