我在一个数据集(x)上使用3个组件进行EM聚类,这只是具有15个特征的数据框。
from sklearn import mixture
import pandas as pd
x=pd.read_csv('tr.csv', sep=';')
em = mixture.GMM(n_components=3)
em.fit(x)
然后我想在我的数据框架中为集群创建一个额外的列,并为每个变量添加每个集群的标签(例如,像在k-means方法中使用labels_)。但我最好的是权重,它似乎不太正确:
x['CLUSTER'] = pd.Series(em.weights_, index=x.index).astype(str)
它给了我一个错误(就像有100000行在你的数据,但你试图只追加3)。
那么我如何能够在EM算法中使用聚类的标签,以及如何将它们插入到第一个df中的每个变量的列中?
谢谢!
为了获得"标签",您需要调用.predict(x)
而不是.weights
, .weights
是(许多!)拟合分布的参数,而不是逐点标签。
x['CLUSTER'] = em.predict(x)