1

数据集由三个集群混合而成,每个集群来自一个由 mu_k 和 sigma_k 参数化的高斯密度函数,k = 0, 1, 2。

我想在图表中绘制这些 2D 样本及其轮廓,这些样本由其集群着色。

import matplotlib.pyplot as plt

% Docstring of function GM_generated_data().
% This function generated the data.
% y is a ndarray, with its elements y[i] = array([y1, y2]),
% z is a indicator variable which represents which cluster each y[i] belongs to, 
% z[i] \in {0, 1, 2}.
y, z = GM_generated_data(paras)

% Plot each point with its cluster color iteratively, 
colors = 'bgrcmykw'
for i in range(len(y)):
    plt.plot(y[i][0], y[i][1], 'o', color = colors[z[i]])
plt.show()

Q1。有一个更好的方法吗?

现在我需要更新指标变量 z,这恰好称为高斯混合模型的吉布斯采样。

iterations = 20
for iteration in range(iterations):
    ... % Operations update z
    plt.plot(y[i][0], y[i][1], 'o', color = colors[z[i]])
plt.show()

我想展示的是在每次迭代中,我可以看到每个情节步骤的变化过程。

Q2.Python中有没有方法可以做到这一点?就像 MATLAB 的坚持...暂停(0.5)...推迟?

4

1 回答 1

1

如果您不太关心哪个颜色是哪个集群,或者您想构建一个颜色映射(这实际上很容易),您可以在没有 for 循环的情况下执行此操作(您的第一段代码):

plt.scatter(y[:,0],y[:,1],c=z,cmap='Paired')

(或用“配对”代替您的彩色地图)。

于 2013-07-15T03:40:53.120 回答