# -*- coding: UTF-8 -*-
from Bio.Cluster import *
#http://biopython.org/DIST/docs/api
#用k-means 或 k-median进行聚类,K为聚类数
def KCluster(data, K=2):
clusterid, error, nfound = kcluster (data, nclusters=K, mask=None, weight=None, transpose=0, npass=1, method='a', dist='e', initialid=None)
"""
nclusters: 聚类数 (the 'k' in k-means)。
transpose: =0, 行进行聚类; =1,列进行聚类。
npass : 执行聚类算法的次数, 每次有一个随机的初始条件。
method : 指定中心簇的发现方法
'a': 算术平均法
'm': 中位数
dist : 指定要使用的距离函数
'e': 欧几里得距离
'b': City Block distance
'c': 皮尔森相关
'a': 相关性的绝对值
'u': 偏相关
'x': 绝对偏相关
's': 斯皮尔曼等级相关
'k': Kendall's tau
initialid: =None, 进行npass次EM算法,每次随机初始条件;!=None, 只进行一次EM算法,从给定的初始条件开始。
"""
"""
return:
clusterid: npass次聚类中最好的一次解决方案
error: 返回的解决方案中,距离的within-cluster和
nfound: 这个解决方案被发现的次数
"""
cdata, cmask = clustercentroids(data, mask=None, transpose=0, clusterid=clusterid, method='a')
"""
计算聚类中心
mask : 显示数据丢失,如果mask[i][j]==0, 表示data[i][j]缺失。
transpose: =0, 行进行聚类; =1,列进行聚类。
clusterid: 聚类返回的解决方案,为非负
method : 指定中心簇的发现方法
'a': 算术平均法
'm': 中位数
"""
"""
return:
cdata: 聚类中心的坐标
cmask: cdata中丢失的元素
"""
return clusterid, cdata
if __name__ == '__main__':
data = [[1,1],
[1.5,2],
[3,4],
[5,7],
[3.5,5],
[4.5,5],
[3.5,4.5],
]
print KCluster(data, 2)
"""
clusterid = [0 0 1 1 1 1 1]
cdata = [[ 1.25 1.5 ][ 3.9 5.1 ]]
"""
转载请注明原文地址: https://ju.6miu.com/read-3100.html