python & scikit:如何从高斯混合模型拟合中获取拟合模型的参数?
python & scikit: How to get the parameter of fitted models from Gaussian mixture models fitting?
拟合完gaussian mixture model
(X-Y数据集)后,如何获取每个分布的参数?例如mean, std, and weights and angle
每个分布?
我想我可以找到代码 here:
def make_ellipses(gmm, ax):
for n, color in enumerate('rgb'):
v, w = np.linalg.eigh(gmm._get_covars()[n][:2, :2])
u = w[0] / np.linalg.norm(w[0])
angle = np.arctan2(u[1], u[0])
angle = 180 * angle / np.pi # convert to degrees
v *= 9
ell = mpl.patches.Ellipse(gmm.means_[n, :2], v[0], v[1],
180 + angle, color=color)
ell.set_clip_box(ax.bbox)
ell.set_alpha(0.5)
ax.add_artist(ell)
毕竟,要绘制椭圆,您需要知道 mean,std,angle,weight
。但是代码真的很复杂,不知道有没有更简单的方法?
更新:我在 http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GMM.html#sklearn.mixture.GMM.fit 中找到了属性,现在我正在处理它。
正如您在 scikit's doc for GMM 中所读到的,一旦您训练了模型(称之为 clf
),您可以使用 clf.means_
、clf.covars_
和clf.weights_
.
我要补充一点,您可以使用 clf.converged_
的值检查您的模型是否已 trained/has 收敛
拟合完gaussian mixture model
(X-Y数据集)后,如何获取每个分布的参数?例如mean, std, and weights and angle
每个分布?
我想我可以找到代码 here:
def make_ellipses(gmm, ax):
for n, color in enumerate('rgb'):
v, w = np.linalg.eigh(gmm._get_covars()[n][:2, :2])
u = w[0] / np.linalg.norm(w[0])
angle = np.arctan2(u[1], u[0])
angle = 180 * angle / np.pi # convert to degrees
v *= 9
ell = mpl.patches.Ellipse(gmm.means_[n, :2], v[0], v[1],
180 + angle, color=color)
ell.set_clip_box(ax.bbox)
ell.set_alpha(0.5)
ax.add_artist(ell)
毕竟,要绘制椭圆,您需要知道 mean,std,angle,weight
。但是代码真的很复杂,不知道有没有更简单的方法?
更新:我在 http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GMM.html#sklearn.mixture.GMM.fit 中找到了属性,现在我正在处理它。
正如您在 scikit's doc for GMM 中所读到的,一旦您训练了模型(称之为 clf
),您可以使用 clf.means_
、clf.covars_
和clf.weights_
.
我要补充一点,您可以使用 clf.converged_