k-means によって作成された一連のクラスターの 1 つに新しいデータ ポイントを割り当てるには、そのポイントに最も近い重心を見つけるだけです。
つまり、元のデータ セットの各ポイントを k 個のクラスターの 1 つに繰り返し割り当てるために使用したのと同じ手順です。ここでの唯一の違いは、この計算に使用している重心が最終的なセット、つまり最後の反復での重心の値であることです。
Pythonでの実装の 1 つを次に示します(NumPy を使用):
>>> import numpy as NP
>>> # just made up values--based on your spec (2D data + 2 clusters)
>>> centroids
array([[54, 85],
[99, 78]])
>>> # randomly generate a new data point within the problem domain:
>>> new_data = NP.array([67, 78])
>>> # to assign a new data point to a cluster ID,
>>> # find its closest centroid:
>>> diff = centroids - new_data[0,:] # NumPy broadcasting
>>> diff
array([[-13, 7],
[ 32, 0]])
>>> dist = NP.sqrt(NP.sum(diff**2, axis=-1)) # Euclidean distance
>>> dist
array([ 14.76, 32. ])
>>> closest_centroid = centroids[NP.argmin(dist),]
>>> closest_centroid
array([54, 85])