前面的问题:如何使用sklearn.mixture.GaussianMixture
(GMM)中的weights_init
参数从单独python包执行的K-Means输出初始化GMM
目标:
GaussianMixture
。
GMM的默认实现如下所示:
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=K, init_params='kmeans')
问题:在阅读文档、检查源代码并寻找其他自定义实现之后,我仍然有点不确定我的方法,特别是关于输入参数的使用weights_init
。我建议的方法如下:
from cuml import KMeans
from sklearn.mixture import GaussianMixture
# KMeans performed on GPU cluster w/ CUML library:
km = KMeans(n_clusters=K)
km.fit_predict(data)
labels = km.labels_
centroids = km.cluster_centers_
# GMM performed on CPU w/ sklearn library:
gmm = GaussianMixture(n_components=K, means_init=centroids, weights_init=???)
labels = gmm.fit_predict(data)
centroids = gmm.means_
我可以想出几种方法来确定weights_init
,但我追求的是默认实现中使用的方法。我的直觉表明,权重只是数据集中属于特定集群的样本的分数,但我找不到任何东西来证实这一点。提前感谢您的帮助或澄清
下面提供了使用cuML的KMeans为sklearn的GaussianMixture创建权重以代替默认权重的代码。 您需要使用从cuML的KMeans模型获得的标签来创建权重。 我在下面的示例中使用了
make_blobs
数据集:相关问题 更多 >
编程相关推荐