怎么可能?转换为执行python k-means算法到x-means和k-means算法?

斯莱姆斯莱姆 成员职位:32贡献我
2019年6月编辑 帮助
大家好,我已经通过执行python操作符进行k-means聚类,但我想应用到这个过程k-medoid和x-means,所以我需要在我的python屏幕中更改为k-means代码部分,所以我需要为x-means和k-medoid编写代码到k-means执行python屏幕。我已经分享了我的python屏幕
------------- 代码 ----------------
进口熊猫作为pd
从操作符导入itemgetter
将numpy导入为np
进口随机
导入系统
从scipy。空间输入距离
从sklearn。集群导入KMeans


C = 10
def k_means(X):
kmeans = kmeans (n_clusters=C, random_state=0).fit(X)
返回kmeans.cluster_centers_

def samevolumecluster(D, volumes):
其中:点到簇中心的距离D, Npt x C
out: xtoc, X -> C,等大小的集群
”“”
clustervolume = (np.sum(volumes)) / C

xcd =列表(np.ndenumerate (D)) # ((0, 0), d00), ((0,1) d01)…
xcd。排序(key=itemgetter(1))

Xtoc = np。ones(Npt, int) * -1

Nincluster = np。0 (C, int)

Vincluster = np。0 (C, int)

Nall = 0

对于xcd中的(x,c), d:
如果xtoc[x] < 0 and vincluster[c] <= clustervolume+10:
Xtoc [x] = c

Nincluster [c] + 1
Vincluster [c] += volumes[x]

Nall += 1

if nall >= Npt:中断

返回xtoc

def rm_main(数据):
Data_2 = data.values
Volumes = data_2[:,1]

中心= k_means(data_2)
D =距离。Cdist (data_2, centres)
xtoc = samevolumecluster(D, volumes)
Data ['cluster'] = xtoc
返回数据
标记:

答案

  • David_ADavid_A 管理员,主持人,员工,RMResearcher,成员职位:286RM研究
    你好,

    你知道吗,没有必要自己编写这些聚类算法。
    RapidMiner有很多集群方法作为内置的,可以使用的操作符。

    最好的
    大卫


    SGolbert
登录注册置评。