2

Numpy を使用して Python で K-Means アルゴリズムを作成しています。すべての重心までの距離の部分はかなり最適化されています (重心のマトリックスを個別に計算するのではなく) が、新しい重心の計算部分に苦労しています。データセットから重心ごとのデータをコピーして、平均を計算しています。

コピーしない方が早いと思います。Python/Numpy でこれを行うにはどうすればよいですか?

コードスニペット:

    for c_i in range(k):
        sub_data = np.zeros([n_per_c[c_i],data_width])

        sub_data_i = 0
        for data_i in range(data_length):
            if label[data_i] == c_i:                    
                sub_data[sub_data_i,:] = data[data_i,:]
                sub_data_i += 1

        c[c_i] = np.mean(sub_data, axis=0)

c は私が持っている重心のリスト、データはデータセット全体、ラベルはクラスラベルのリストです。

4

1 に答える 1