2022年K-Means聚类算法及实现代码 .pdf
《2022年K-Means聚类算法及实现代码 .pdf》由会员分享,可在线阅读,更多相关《2022年K-Means聚类算法及实现代码 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、K-Means算法k-means 算法接受参数k;然后将事先输入的n 个数据对象划分为k 个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。假设要把样本集分为c 个类别,算法描述如下:(1)适当选择c 个类的初始中心;(2)在第 k 次迭代中,对任意一个样本,求其到c 个中心的距离,将该样本归到距离最短的中心所在的类;(3)利用均值等方法更新该类的中心值;(4)对于所有的c 个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。#includ
2、e#include#include#define _NUM 3/预定义划分簇的数目using namespace std;/*特征对象,表示一个元组,一个元组有两个数值属性*/struct Tuple int attr1;int attr2;/*获取两个特征对象之间的距离,在此以欧基米德距离作为距离度量标准*/double getDistXY(Tuple t1,Tuple t2)return sqrt(t1.attr1-t2.attr1)*(t1.attr1-t2.attr1)+(t1.attr2-t2.attr2)*(t1.attr2-t2.attr2);/*计算簇的中心点,在此以簇中所有对
3、象的平均距离来计算中心点*/Tuple getMeansC(vector c)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -int num=c.size();double meansX=0,meansY=0;Tuple t;for(int i=0;i num;i+)meansX+=ci.attr1;meansY+=ci.attr2;t.attr1=meansX/num;t.attr2=meansY/num;return t;/*获取算法的准则函数值,当准则函数收敛时算法停止*/double getE(vector classes,Tuple means)double
4、sum=0;for(int i=0;i _NUM;i+)vector v=classesi;for(int j=0;j v.size();j+)sum+=(vj.attr1-meansi.attr1)*(vj.attr1-meansi.attr1)+(vj.attr2-meansi.attr2)*(vj.attr2-meansi.attr2);coutsum:sumendl;return sum;/*对当前的特征对象,查找与其最临近的簇,最临近即到簇中心点的距离最短*/int searchMinC(Tuple t,Tuple means_NUM)int c=0;int d=(t.attr1-m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年K-Means聚类算法及实现代码 2022 Means 算法 实现 代码
限制150内