def cluster(data, k, mode='full'): d = data.shape[1] gm = GM(d, k, mode) gmm = GMM(gm, 'random') em = RegularizedEM(pcnt=pcnt, pval=pval) em.train(data, gmm, maxiter=20) return gm, gmm.bic(data)
def cluster(data, k, mode = 'full'): d = data.shape[1] gm = GM(d, k, mode) gmm = GMM(gm) em = EM() em.train(data, gmm, maxiter = 20) return gm, gmm.bic(data)
def cluster(data, k, mode = 'full'): d = data.shape[1] gm = GM(d, k, mode) gmm = GMM(gm, 'random') em = RegularizedEM(pcnt = pcnt, pval = pval) em.train(data, gmm, maxiter = 20) return gm, gmm.bic(data)
def cluster(data, k): d = data.shape[1] gm = GM(d, k) gmm = GMM(gm) em = EM() em.train(data, gmm, maxiter=20) return gm, gmm.bic(data)
#++++++++++++++++++++++++ # Learn the model with EM #++++++++++++++++++++++++ # List of learned mixtures lgm[i] is a mixture with i+1 components lgm = [] kmax = 6 bics = N.zeros(kmax) em = EM() for i in range(kmax): lgm.append(GM(d, i+1, mode)) gmm = GMM(lgm[i], 'kmean') em.train(data, gmm, maxiter = 30, thresh = 1e-10) bics[i] = gmm.bic(data) print "Original model has %d clusters, bics says %d" % (k, N.argmax(bics)+1) #+++++++++++++++ # Draw the model #+++++++++++++++ import pylab as P P.subplot(3, 2, 1) for k in range(kmax): P.subplot(3, 2, k+1) level = 0.9 P.plot(data[:, 0], data[:, 1], '.', label = '_nolegend_') # h keeps the handles of the plot, so that you can modify