Exemple #1
0
def bi_kmeans(data, k):
    q = K_means.kmeans(data, 2)
    index = 2
    # 初始化centroids节点
    centroid = K_means.init_centroids(data, 2)
    index=2
    while index!=k:
        datasep = []
        a = max_key(get_sse(data, centroid, q))
        print a
        for i in range(len(data)):
            if q[i] == a:
                datasep.append(data[i])
        sep_centroid = K_means.init_centroids(datasep, 2)
        index += 1
        print centroid
        centroid=copy.deepcopy(numpy.delete(centroid, a,0))
        print centroid
        centroid = numpy.concatenate((centroid, sep_centroid))
        print "======================================"
        print centroid
        print "======================================"
        q = K_means.cost_funct(data, centroid)
        centroid = K_means.update_centroid(data, centroid, q)
    pre_centroid = centroid
    q = K_means.cost_funct(data_process.data, centroid)
    now_centroid = copy.deepcopy(pre_centroid)
    pre_centroid = K_means.update_centroid(data, pre_centroid, q)
    print now_centroid - pre_centroid
    while (now_centroid != pre_centroid).any():
        print pre_centroid
        print now_centroid
        q = K_means.cost_funct(data, pre_centroid)
        print q
        now_centroid = copy.deepcopy(pre_centroid)
        pre_centroid = K_means.update_centroid(data, pre_centroid, q)
    return q