数据集由三个簇组成,每个簇都来自由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,这正好称为高斯混合模型的Gibbs采样。
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()
我想要展示的是在每次迭代中,我可以看到每个绘图步骤的变化过程。
问题。在Python中有一个方法可以做到这一点吗?就像MATLAB一样......暂停(0.5)......等等?
答案 0 :(得分:1)
如果你不太关心哪个颜色是哪个簇,或者你想构建一个颜色图(这实际上非常简单),你可以在没有for循环(你的第一段代码)的情况下这样做:
plt.scatter(y[:,0],y[:,1],c=z,cmap='Paired')
(或代替'配对'为你的颜色图)。