(self, datas, k, iter_count=10000, diff=0.00001)
return labels, centers
函数功能：
               对数据进行聚类 ， 通过kmeans 算法
        过程：
             随机从数据选出centers （一个随机过程）
             开始迭代
                 循环每个数据：
                     计算数据与每个中心距离 ， 找到一个最小值
                     如果 数据原有label 和现有label 不同：
                          diff_labels += 1
                 计算数据label变化比率 ， 如果超出diff设置值 ， 继续下轮迭代
                 否则 ， 跳出循环
            返回数据labels
函数功能：
               对数据进行聚类 ， 通过kmeans 算法
        过程：
             随机从数据选出centers （一个随机过程）
             开始迭代
                 循环每个数据：
                     计算数据与每个中心距离 ， 找到一个最小值
                     如果 数据原有label 和现有label 不同：
                          diff_labels += 1
                 计算数据label变化比率 ， 如果超出diff设置值 ， 继续下轮迭代
                 否则 ， 跳出循环
            返回数据labels
函数功能： 对数据进行聚类 ， 通过kmeans 算法 过程： 随机从数据选出centers （一个随机过程） 开始迭代 循环每个数据： 计算数据与每个中心距离 ， 找到一个最小值 如果 数据原有label 和现有label 不同： diff_labels + = 1 计算数据label变化比率 ， 如果超出diff设置值 ， 继续下轮迭代 否则 ， 跳出循环 返回数据labels
def cluster(self, datas, k, iter_count=10000, diff=0.00001):
        """
        函数功能：
               对数据进行聚类 ， 通过kmeans 算法
        过程：
             随机从数据选出centers （一个随机过程）
             开始迭代
                 循环每个数据：
                     计算数据与每个中心距离 ， 找到一个最小值
                     如果 数据原有label 和现有label 不同：
                          diff_labels += 1
                 计算数据label变化比率 ， 如果超出diff设置值 ， 继续下轮迭代
                 否则 ， 跳出循环
            返回数据labels
        """
        centers = self.rand_seed(datas, k)
        center_range = range(len(centers))
        data_range = range(len(datas))
        labels = [-1 for i in data_range]
        for _ in range(iter_count):
            diff_labels = 0
            for i in data_range:
                bestlabel = min([(self.distance(datas[i], centers[j][0]),
                                  centers[j][1]) for j in center_range])
                if labels[i] != bestlabel[1]:
                    diff_labels += 1
                    labels[i] = bestlabel[1]
            if float(diff_labels) / len(datas) < diff:
                break
            centers = self.update_centers(datas, labels, centers)
        return labels, centers
def cluster ( self , datas , k , iter_count = 10000 , diff = 0.00001 ) : centers = self . rand_seed ( datas , k ) center_range = range ( len ( centers ) ) data_range = range ( len ( datas ) ) labels = [ - 1 for i in data_range ] for _ in range ( iter_count ) : diff_labels = 0 for i in data_range : bestlabel = min ( [ ( self . distance ( datas [ i ] , centers [ j ] [ 0 ] ) , centers [ j ] [ 1 ] ) for j in center_range ] ) if labels [ i ] != bestlabel [ 1 ] : diff_labels += 1 labels [ i ] = bestlabel [ 1 ] if float ( diff_labels ) / len ( datas ) < diff : break centers = self . update_centers ( datas , labels , centers ) return labels , centers