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