2013-07-15 2 views
1

Набор данных смешивается с трех кластеров, каждый из которых исходит от функции гауссовой плотности параметризованных mu_k и sigma_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.Is существует ли способ в Python для этого? как MATLAB удерживать ... пауза (0.5) ... удержать?

ответ

1

Если вам неинтересно, какой цвет является кластером, или вы чувствуете, что хотите создать цветовую карту (на самом деле это довольно просто), вы можете просто сделать это без цикла for (ваш первый фрагмент кода):

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

(или заменить «парный» для вас цветной карты).

Смежные вопросы