智能优化算法改进-K-means聚类种群初始化附Matlab代码

news2024/11/30 8:40:42

目录

0引言

一、K-means聚类原理

二、K-Means聚类算法步骤

三、K-Means聚类原理图​编辑

四、K-means聚类改进智能优化算法种群初始化效果图

4.1  初始种群数据图

​4.2  K-means聚类结果图

4.2.1  根据K-means聚类原理聚类

 4.2.2  根据MATLAB自带kmeans函数聚类

 五、K-means聚类改进智能优化算法种群初始化Matlab部分代码


0引言

       智能优化算法种群初始化的改进是改进中常用策略,比如说混沌种群初始化、佳点集、精英反向学习策略等等,根据阅读文献,K-means聚类可以改进智能优化算法种群初始化,如SASSA,它的策略为K-means聚类种群+正余弦算法改进加入者策略+自适应策略扰动。

一、K-means聚类原理

        K-Means算法是一种典型的基于划分的聚类算法,也是一种无监督学习算法。K-Means算法的思想很简单,对给定的样本集,用欧氏距离作为衡量数据对象间相似度的指标,相似度与数据对象间的距离成反比,相似度越大,距离越小。预先指定初始聚类数以及个初始聚类中心,按照样本之间的距离大小,把样本集划分为个簇根据数据对象与聚类中心之间的相似度,不断更新聚类中心的位置,不断降低类簇的误差平方和(Sum of Squared Error,SSE),当SSE不再变化或目标函数收敛时,聚类结束,得到最终结果。K-Means算法的核心思想:首先从数据集中随机选取k个初始聚类中心C_{i} ,1\leq i\leq k,计算其余数据对象与与聚类中心C_{i}的欧氏距离,找出离目标数据对象最近的聚类中心C_{i},并将数据对象分配到聚类中心C_{i}所对应的簇中。然后计算每个簇中数据对象的平均值作为新的聚类中心,进行下一次迭代,直到聚类中心不再变化或达到最大的迭代次数时停止。空间中数据对象与聚类中心间的欧氏距离计算公式为:

其中,X为数据对象;C_{i}为第i个聚类中心;m为数据对象的维度;X_{j}C_{ij}XC_{i}的第j个属性值。

二、K-Means聚类算法步骤

       K-means算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

K-mean算法步骤如下:

1)随机选取K个样本为中心

2)分别计算所有样本到随机选取的K个中⼼的距离

3)样本离哪个中⼼近就被分到哪个中⼼

4)计算各个中⼼样本的均值(最简单的⽅法就是求样本每个维度的平均值)作为新的中心

5)重复(2)(3)(4)直到新的中⼼和原来的中⼼基本不变化的时候,算法结束

三、K-Means聚类原理图

四、K-means聚类改进智能优化算法种群初始化效果图

4.1  初始种群数据图

clc;
clear;
close all;
dim=2;%问题维度
pop=200;%种群数量
x_lower = 20e-9;            % 搜索变量x范围下限
y_lower = 0.55;             % 搜索变量y范围下限
x_upper = 500e-9;           % 搜索变量x范围上限
y_upper = 1;                % 搜索变量y范围上限
for i = 1:pop
    data(i, 1) = x_lower + (x_upper - x_lower) * rand;
    data(i, 2) = y_lower + (y_upper - y_lower) * rand;  %初始化种群
end

4.2  K-means聚类结果图

4.2.1  根据K-means聚类原理聚类

聚类数为4时聚类结果:

 聚类数为5时聚类结果

 聚类数为6时聚类结果

 4.2.2  根据MATLAB自带kmeans函数聚类

 聚类数为4时聚类结果:

 聚类数为5时聚类结果:

  聚类数为6时聚类结果:

 五、K-means聚类改进智能优化算法种群初始化Matlab部分代码

clc;
clear;
close all;
dim=2;%问题维度
pop=200;%种群数量
x_lower = 20e-9;            % 搜索变量x范围下限
y_lower = 0.55;             % 搜索变量y范围下限
x_upper = 500e-9;           % 搜索变量x范围上限
y_upper = 1;                % 搜索变量y范围上限
for i = 1:pop
    data(i, 1) = x_lower + (x_upper - x_lower) * rand;
    data(i, 2) = y_lower + (y_upper - y_lower) * rand;  %初始化种群
end
%% 原理推导K均值
[m,n]=size(data);
cluster_num=6;
cluster=data(randperm(m,cluster_num),:);


......


%% 画出聚类效果
figure(2)
subplot(2,1,1)
a=unique(index_cluster); %找出分类出的个数
C=cell(1,length(a));
for i=1:length(a)
   C(1,i)={find(index_cluster==a(i))};
end
for j=1:cluster_num
    data_get=data(C{1,j},:);
    scatter(data_get(:,1),data_get(:,2),100,'filled','MarkerFaceAlpha',.6,'MarkerEdgeAlpha',.9);
    hold on
end
sc_t=mean(silhouette(data,index_cluster'));
title_str=['K均值聚类','  聚类数为:',num2str(cluster_num),'  SC轮廓系数:',num2str(sc_t)];

 

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

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

相关文章

Docker镜像的创建方法及Dockerfile案例

目录 一、基于现有镜像创建1、创建启动镜像2、生成新镜像 三、基于Dockerfile创建1、Dockerfile结构及分层2、联合文件系统3、docker镜像加载原理4、dockerfile操作常用的指令 四、Dockerfile 案例1、dockerfile构建httpd实例2、Dockerfile构建nginx实例3、Dockerfile构建tomca…

chatgpt赋能python:Python下载Pandas库教程

Python下载Pandas库教程 什么是Pandas库? Pandas是用于数据处理和数据分析的Python库,它提供了快速,灵活和全面的数据结构,如Series和DataFrame,使数据清理,分析和处理变得更加娴熟。 为什么要下载Panda…

宝塔面板备份docker,镜像打包下载到本地,镜像还原,镜像推送

目录 1. 生成镜像2. 打包镜像并下载到本地3. 镜像还原4. 镜像推送总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 1. 生成镜像 软件商店->点击docker管理器的设置 生成镜像 这里可以直接点击提交&#…

RNN、LSTM知识点总结

CNN——用于计算机视觉(CV) RNN——用于自然语言处理(NLP) 理解:其中h0,h1...ht-1是中间结果,x0,x1...x代表时序输入。举例:如I am Chinese,I love China&…

PS AI功能真实测评;OpenAI提示词最佳实践官方指南;产品出海的多语言场景设计策略;AI黑客松的复兴与狂欢 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 百度商业AI技术创新大赛 (CTI),报名截至7月13日 百度商业AI技术创新大赛,是面向全社会开放的全国性技术创新大…

ROS EKF 机器人位姿估计功能包:robot_pose_ekf 详解

ROS EKF 机器人位姿估计功能包:robot_pose_ekf 详解 功能包使用文件结构配置参数 订阅的话题具体代码轮速里程计惯导数据视觉里程计 发布的话题robot_pose_ekf 的工作原理 功能包使用 文件结构 没有launch文件夹,有两个launch文件都在外面没有config文件…

chatgpt赋能python:Python如何下载FFmpeg:必知方法及优势

Python如何下载FFmpeg:必知方法及优势 如果你是一位使用Python进行视频处理的开发者,那么推荐在项目中使用FFmpeg库。FFmpeg是一个免费开源的视频框架,可以用于解析、编码、转换和流媒体处理等多种操作。本文将介绍如何通过Python下载和使用…

5. 超炫酷的爬虫源代码-vip音乐下载器

文章目录 1. 准备工作2. 安装第3方库2.1 os 库2.2 tkinter库2.3 webbrowser 库2.4 requests 库2.5 PySimpleGUI 库2.6 retrying库 3. 源代码4. 运行结果5. 音乐下载器的使用6. 去哪里找下载的音乐7. 部分代码解析8. 留言 1. 准备工作 在电脑D盘新建一个【安迪笔记】文件夹。 【…

chatgpt赋能python:Python怎么下载cfg模块

Python怎么下载cfg模块 Python是一种流行的编程语言,它多用于Web开发、数据分析、人工智能等领域。要想使用Python编写程序,需要掌握大量的Python模块。其中,cfg模块是一个比较特殊的模块,它可以用来读取和写入INI文件。本文将介…

chatgpt赋能python:Python科学计算之超级强大的数据分析库:Pandas

Python科学计算之超级强大的数据分析库:Pandas Python作为一种高级编程语言,已经被广泛应用于数据分析、机器学习和人工智能等领域。在这些领域中,Pandas是最重要的Python库之一。它提供了高效、灵活的数据结构和数据分析工具,如…

chatgpt赋能python:PythonNumpy下载指南

Python Numpy下载指南 在Python中进行科学计算和数据处理,numpy是一个非常重要和必不可少的工具包。Numpy是Python中强大的数学和科学计算工具,它提供了高效的数据结构和计算方法,可以快速处理大型数据集和复杂的科学计算任务。本文介绍了如…

HashMap源码

介绍 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 特点&#xff1…

redis到底是怎么样进行渐进式Rehash的

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。那么redis的底层是如何来存储数据的呢? 一、redis如何在存储大量的key时候,查询速度还能接近O(1)呢&#xf…

JavaSE笔记(六)重制版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hqvdx4nQ-1685927311485)(https://s2.loli.net/2022/10/04/SkAn9RQpqC4tVW5.png)] 集合类与IO 前面我们已经把基础介绍完了,从这节课开始,我们就正式进入到集合类的讲解中。 …

【ChatGPT+Python】Landsat卫星图像黑边去云及旋转校正

引言 下图是一张Landsat图像的示例(右图)。我们可以明显地看到四周的黑边和倾斜的角度。这是由于卫星传感器成像导致的。一般情况下,我们是不需要去除黑边和选择的,因为这样做之后投影信息和位置信息就不正确了。但对于做深度学习…

React 基本介绍

目录 1、React是什么 2、React 三大颠覆性的特点 2.1 组件 2.2 JSX 2.3 Virtual DOM 3、Flux 架构(redux) 3.1 Flux 3.2 redux 4、打包工具(webpack) 4.1 webpack与RequireJS、browserify 4.2 模块规范 4.3 非 JavaSc…

二叉树的数学性质、最大堆的实现

每层个数的通式 第一层: 2 0 第二层: 2 1 第三层: 2 2 第四层: 2 3 每层个数的通式 2 n − 1 个, n 为层数 \begin{aligned} 第一层:2^0 \\ 第二层:2^1 \\ 第三层:2^2 \\ 第四层&…

linux历史记录简易审计系统

1、有时候我们需要对线上用户的操作进行记录,可以进行追踪,出现问题追究责任,但是linux自带的history并不会实时的记录(仅仅在内存中,当用户正常退出(exit logout )时才会记录到history文件里),并且还有1000行的限制可以删除的; 为了保证让用户的操作进行实时记录&…

chatgpt赋能python:Python入门:如何下载NumPy库

Python入门:如何下载NumPy库 如果你是Python初学者或是有开发经验的工程师,你可能会涉及到使用NumPy库。NumPy是Python中一个非常重要的科学计算库,它提供了高效的多维数组数据结构和数学函数,被许多人用于数据分析、机器学习、科…

Verilog基础:task和function的使用(二)

相关文章 Verilog基础:表达式位宽的确定(位宽拓展) Verilog基础:表达式符号的确定 Verilog基础:数据类型 Verilog基础:位宽拓展和有符号数运算的联系 Verilog基础:case、casex、ca…