hadoop之二维数据之kmeans深入

来源:互联网 发布:淘宝开店怎么认证 编辑:程序博客网 时间:2024/06/06 01:53

O、一维数据的kmeans,很简单

但二维数据+分区并行呢?

1、怎么初始化中心点?

2、怎么计算中心距离,跟一位一样吗?毕竟只是部分数据在计算。


一、先讲讲一维数据的kmeans吧:


txt  string[]

初始化中心点,随机选取下标,

string0[] txt0

第k次迭代中,计算样本到c个中心的距离,将样本归到其所应在的类

txt txt0

在分区里:

每个数据分成x,y,选取一个中心点0作为x0,y0,作为min参照值

for(int i=0;i<list.length;i++)

 min += (float) Math.pow((Float.parseFloat(list[i]) - Float.parseFloat(c[i])),2);

求得距离d0……2的值

 if(min>distance)
                {
                    min=distance;
                    pos=i;
                }

   for(int i=0;i<center.length;i++),即可判断距离最小的中心点

 context.write(new Text(center[pos]), new Text(outValue));即可给样本归类

再reduce分区,即可获得整体数据的kmeans一次分类。

reduce后,可以进行相同key值得总xy平均得新的中心点,以进行下一次的迭代。

二、二维

二维的思路就是转一维委屈



1 0
原创粉丝点击