Вы можете передать начальные значения для центроидов с параметром в sklearn.cluster.kmeans
init
. Итак, вы можете просто сделать:
centroids, labels, inertia = k_means(data, k)
new_data = np.append(data, extra_pts)
new_centroids, new_labels, new_inertia = k_means(new_data, k, init=centroids)
при условии, что вы просто добавление точек данных и не меняя k
.
Я думаю, что это иногда означает, что вы получаете субоптимальный результат, но обычно он должен быть быстрее. Возможно, вам захочется периодически переделывать, скажем, 10 случайных семян и взять лучший.