利用Bio.Cluster进行聚类

# -*- 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 ]]
    """

你可能感兴趣的:(NLP)