那位仁兄有兴趣做一下这个算法?

[复制链接]
查看11 | 回复0 | 2021-1-27 07:11:47 | 显示全部楼层 |阅读模式
算法:
1.给定一个数据集,输入一个k,表示要将这个数据集分成k个聚类(分成k组)
2.设置k个中心点,a1,a2,….ak,初始化成数据集的前k条数据
3.从a1开始,到数据集的最后一个,对每一条数据,测量其和每一个中心点距离,选取最小的一个,将这个数据划至这个中心点代表的聚类当中
4.步骤三完成后,对每一个聚类重新计算中心点(即更新a1…..ak),看与上一次的有没有不同,如果不同,则重复步骤3;若中心点不再发生变化,则完成
5.输出分组结果

*1.欧基里德距离:


Xi,Xj为给定的两点,d为向量数,d=12,p=2

*2.中心点的求法(老师没有提过)
我在查一下
*3.非数值型属性的数值化
数据集共有1000条数据,每条数据都有3个属性值,分别为本WarmBlooded(是否是热血动物),Weight(重量),Colour(颜色)
在此算法中,因为要计算距离,要求所有数据必须是数值型。而在给定的数据集中warmblooded和colour属性都是列举值,这样需要对其进行数据处理。
3.1.也就是WarmBlooded的属性下的数值为yes时,将其作为1来计算,同理no的时候,作为0来计算。
3.2比较麻烦的是color属性,此属性下共有
brown,grey,white,black,red,pink,green,blue,yellow,silver
10个列举行的数值,这需要将这个属性分成10个属性,这样修改后的数据集就变成了12个属性,分别为:WarmBlooded(是否是热血动物),Weight(重量),brown,grey,white,black,red,pink,green,blue,yellow,silver

当原始数据集中的这个的属性值为brown时,在修改后的数据集中brown属性下对应的属性值为1,其他9个颜色的属性值为0;
同理,当原始的数据集color对应的值为pink时,在修改后的数据集中pink属性下对应的值为1,其他的9个颜色属性值为0;

*4.程序的健壮性
输入k的时候检查是否为大于零正数值,且k的值小于数据的条数,既小于1000







分 -->
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行