Python - Kmeans - добавить центроиды как новый столбец - PullRequest
1 голос
/ 22 апреля 2020

Предположим, у меня есть следующий фрейм данных. Как я могу создать новый столбец "new_col", содержащий центроиды? Я могу создать столбец только с лабораториями, а не с центроидами.

Вот мой код.

from sklearn import preprocessing
from sklearn.cluster import KMeans

numbers = pd.DataFrame(list(range(1,1000)), columns = ['num'])

kmean_model = KMeans(n_clusters=5)
kmean_model.fit(numbers[['num']])

kmean_model.cluster_centers_
array([[699. ],
       [297. ],
       [497.5],
       [899.5],
       [ 99. ]])

numbers['new_col'] = kmean_model.predict(numbers[['num']])

1 Ответ

0 голосов
/ 22 апреля 2020

Это просто. Просто используйте .labels_ следующим образом.

numbers['new_col'] = kmean_model.labels_

Редактировать. Извините за мою ошибку.

Создайте словарь, ключ которого - метка, а значение - центр, и замените new_col, используя словарь. Смотрите следующее.

label_center_dict = {k:v for k, v in zip(kmean_model.labels_, kmean_model.cluster_centers_)}
numbers['new_col'] = kmean_model.labels_
numbers['new_col'].replace(label_center_dict, inplace = True)
...