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

Python-Kmeans-将质心添加为新列,python,k-means,centroid,Python,K Means,Centroid,假设我有以下数据帧。如何创建包含质心的新列“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[['

假设我有以下数据帧。如何创建包含质心的新列“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_
编辑。对不起,我弄错了

制作键为label、值为centers的字典,并使用字典替换新的列。见下文

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)

这很简单。只需按如下方式使用
.labels

numbers['new_col'] = kmean_model.labels_
编辑。对不起,我弄错了

制作键为label、值为centers的字典,并使用字典替换新的列。见下文

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)

您创建的数据帧(数字)有1000条记录,但质心的数量只有5条。因此,不建议将质心附加到数据帧中。是否只想知道质心值?我想将数据帧值指定给最近的质心。同样,在这个例子中,我有一个真正的问题,我有>100k条记录,我必须将它们分配给质心,但问题与在这种情况下相同,您创建的数据帧(数字)有1000条记录,但质心的数量只有5条。因此,不建议将质心附加到数据帧中。是否只想知道质心值?我想将数据帧值指定给最近的质心。同样,在这个例子中,我有一个真正的问题,我有超过100k条记录,我必须将它们分配给质心,但问题与在这个例子中相同,我只需要群集中心,而不是标签值Cellent answer,这就是我要找的:我只需要群集中心,而不是标签值Cellent answer,这就是我想要的:D