Чтобы назначить новую точку данных одному из набора кластеров, созданных с помощью k-средних, просто найдите ближайший к этой точке центроид .
Другими словами, те же самые шаги, которые вы использовали для итеративного назначения каждой точки в исходном наборе данных для одного из k кластеров. Единственное отличие здесь состоит в том, что центроиды, которые вы используете для этого вычисления, - это окончательный набор, т.е. значения для центроидов на последней итерации.
Вот одна реализация в python (w / 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])