求教:数据挖掘算法:Cure层次凝聚聚类算法(利用代表点聚类)
CURE算法:利用代表点聚类
CURE算法采用了一种新颖的层次聚类算法,该算法选择基于质心和基于代表对象方法之间的中间策略。它不用单个质心或代表一个簇,而是选择数据空间中固定数目的具有代表性的点。簇的代表点产生方式:首先选择簇中分散的对象,然后根据一个特定的分数或收缩因子向簇中心“收缩”或移动它们。在算法每一步,有最近距离的代表点对(每个点来自不同簇)的两个簇合并。
CURE算法的核心步骤:
(1) 从源数据对象中抽取一个随机样本S;
(2) 将样本S分割为一组划分;
(3) 对每个划分局部地聚类;
(4) 通过随机取样剔除孤立点。如果一个簇增长得太慢,就去调它;
(5) 对局部得簇进行聚类。落在每个新形成得簇中的代表点根据用户定义的一个收缩因子ą收缩或向簇中心移动;
(6) 用相应的簇标签来标记数据。
优点:CURE的复杂度是O(n),对孤立点的处理更加健壮,可识别非球形和大小变化较大的簇;对大型数据库也有良好的伸缩性;支持复杂形状和不同大小的聚类;敏感度低。
缺点:不能处理分类属性
问题:
小弟我最近要用vc++编写一个数据挖掘的cure算法,由于我对vc++刚刚接触,想清教
此中高手,能否提供相关伪码或者源码.我的这个算法的背景数据库设计如下
数据库的表叫sale:有四个属性分别为ID(自动编号);name(文本);age(数字);
income(数字);这个算法要求对age(数字);income(数字) 进行操作,计算距离;
要求在程序中输出sale表,输出所有距离构成的三角矩阵,最后输出聚类的结果
即聚类所产生的所有簇和孤立点.
又能提供帮助的非常感谢,也可以把相关资料发到我的邮箱:flashququ@yahoo.com.cn