def main(argv): # read in arguments args = sys.argv[1:] if len(args) > 0 and args[0] in ("--help", "-h"): print HELP_USAGE return assert len(args) == 3, "wrong number of command parameters!" featDir = args[0] k = int(args[1]) gmmDir = args[2] trainMat = np.load(featDir).astype(np.float32) trainNum, featNum = np.shape(trainMat) flags = yael.GMM_FLAGS_W niter = 20 gmm = yael.gmm_learn( featNum, trainNum, k, niter, yael.FloatArray.acquirepointer(yael.numpy_to_fvec(trainMat)), 1, random.randrange(1000000), 8, flags, ) f = open(gmmDir, "w") yael.gmm_write(gmm, f) del gmm
def compute_gmm(data, nr_clusters, nr_iterations, nr_threads, seed, nr_redos): """Computes GMM using yael functions.""" N, D = data.shape data = np.ascontiguousarray(data) return gmm_learn( D, N, nr_clusters, nr_iterations, numpy_to_fvec_ref(data), nr_threads, seed, nr_redos, GMM_FLAGS_W)
def fit(self, X): n_samples, self.n_features = X.shape yael_X = yael.numpy_to_fvec_ref(X) yael_gmm = yael.gmm_learn( self.n_features, n_samples, self.n_components, self.n_iter, yael_X, self.n_threads, 0, self.n_init, yael.GMM_FLAGS_W | yael.GMM_FLAGS_SIGMA | yael.GMM_FLAGS_MU) self.means_ = yael.fvec_to_numpy( yael_gmm.mu, self.n_components * self.n_features).reshape( (self.n_components, self.n_features)) self.covars_ = yael.fvec_to_numpy( yael_gmm.sigma, self.n_components * self.n_features).reshape( (self.n_components, self.n_features)) self.weights_ = yael.fvec_to_numpy(yael_gmm.w, self.n_components) yael.gmm_delete(yael_gmm)
def compute_gmm(data, nr_clusters, nr_iterations, nr_threads, seed, nr_redos): """ Computes GMM using yael functions. """ N, D = data.shape gmm = gmm_learn(D, N, nr_clusters, nr_iterations, numpy_to_fvec_ref(data), nr_threads, seed, nr_redos, GMM_FLAGS_W) return gmm