Python - Kmeans - 添加质心作为新列

Python - Kmeans - Add the centroids as a new column

假设我有以下数据框。如何创建一个包含质心的新列 "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']])

很简单。只需使用 .labels_ 如下。

numbers['new_col'] = kmean_model.labels_

编辑。对不起我的错误。

制作key为label,value为centers的字典,并用字典替换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)