下载此文档

K-Means聚类算法及实现代码.doc


文档分类:IT计算机 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
精品文档,仅供学习与交流,如有侵权请联系网站删除
【精品文档】第 1 页
K-Means算法
k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
假设要把样本集分为c个类别,算法描述如下:
(1)适当选择c个类的初始中心;
(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。
#include <iostream>
#include <>
#include <vector>
#define _NUM 3 //预定义划分簇的数目
using namespace std;
特征对象,表示一个元组,一个元组有两个数值属性
struct Tuple
int attr1;
int attr2;
获取两个特征对象之间的距离,在此以欧基米德距离作为距离度量标准
double getDistXY(Tuple t1, Tuple t2)
return sqrt(( - ) * ( - ) + ( - ) * ( - ));
计算簇的中心点,在此以簇中所有对象的平均距离来计算中心点
Tuple getMeansC(vector<Tuple> c)
int num = ();
double meansX = 0, meansY = 0;
Tuple t;
for (int i = 0; i < num; i++)
meansX += c[i].attr1;
meansY += c[i].attr2;
= meansX / num;
= meansY / num;
return t;
获取算法的准则函数值,当准则函数收敛时算法停止
double getE(vector<Tuple> classes[], Tuple means[])
double sum = 0;
for (int i = 0; i < _NUM; i++)
精品文档,仅供学习与交流,如有侵权请联系网站删除
【精品文档】第 2 页
vector<Tuple> v = classes[i];
for (int j = 0; j< (); j++)
sum += (v[j].attr1 - means[i].attr1)

K-Means聚类算法及实现代码 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人qsrkmc24
  • 文件大小19 KB
  • 时间2021-11-22
最近更新