(self, train_data, K)
:params train_data: ndarray. 训练数据.
        :params K: int. 要划分的簇的数量.

        :attr train_data:
:params train_data: ndarray. 训练数据.
        :params K: int. 要划分的簇的数量.
: params train_data : ndarray . 训练数据 . : params K : int . 要划分的簇的数量 .
def __init__(self, train_data, K):
        '''
        :params train_data: ndarray. 训练数据.
        :params K: int. 要划分的簇的数量.

        :attr train_data:
        '''
        super().__init__()

        self.train_data = train_data
        self.K = K
        # 标记聚类是否完成。具体的真假，取决于是否还存在需要从一个簇移动到另一个簇的数据
        self.finished = False

        # 随机选取 K 个数据作为各个簇的中心点
        index = random.sample(range(len(self.train_data)), self.K)
        self.centroid = train_data[index, 1:5]

        # 将训练数据均匀分配到各个簇，以便以同一的形式适用于数据的分配
        self.clusters = []
        offset = len(train_data) // self.K
        for i in range(self.K):
            start = offset * i
            if i < self.K-1:
                self.clusters.append(train_data[start:start+offset,:])
            else:
                # 最后一个簇包含剩下的所有数据
                self.clusters.append(train_data[start:,:])
def __init__ ( self , train_data , K ) : super ( ) . __init__ ( ) self . train_data = train_data self . K = K # 标记聚类是否完成。具体的真假，取决于是否还存在需要从一个簇移动到另一个簇的数据 self . finished = False # 随机选取 K 个数据作为各个簇的中心点 index = random . sample ( range ( len ( self . train_data ) ) , self . K ) self . centroid = train_data [ index , 1 : 5 ] # 将训练数据均匀分配到各个簇，以便以同一的形式适用于数据的分配 self . clusters = [ ] offset = len ( train_data ) // self . K for i in range ( self . K ) : start = offset * i if i < self . K - 1 : self . clusters . append ( train_data [ start : start + offset , : ] ) else : # 最后一个簇包含剩下的所有数据 self . clusters . append ( train_data [ start : , : ] )