def poisson_se_multiclust(data, k, n_runs=<NUM_LIT:10>, **se_params):
clusters = []<EOL>norm_data = cell_normalize(data)<EOL>if sparse.issparse(data):<EOL><INDENT>log_data = data.log1p()<EOL>log_norm = norm_data.log1p()<EOL><DEDENT>else:<EOL><INDENT>log_data = np.log1p(data)<EOL>log_norm = np.log1p(norm_data)<EOL><DEDENT>tsvd_50 = TruncatedSVD(<NUM_LIT:50>)<EOL>tsvd_k = TruncatedSVD(k)<EOL>km = KMeans(k)<EOL>tsvd1 = tsvd_50.fit_transform(data.T)<EOL>tsvd2 = tsvd_k.fit_transform(data.T)<EOL>tsvd3 = tsvd_50.fit_transform(log_data.T)<EOL>tsvd4 = tsvd_k.fit_transform(log_data.T)<EOL>tsvd5 = tsvd_50.fit_transform(norm_data.T)<EOL>tsvd6 = tsvd_k.fit_transform(norm_data.T)<EOL>tsvd7 = tsvd_50.fit_transform(log_norm.T)<EOL>tsvd8 = tsvd_k.fit_transform(log_norm.T)<EOL>tsvd_results = [tsvd1, tsvd2, tsvd3, tsvd4, tsvd5, tsvd6, tsvd7, tsvd8]<EOL>clusters = []<EOL>for t in tsvd_results:<EOL><INDENT>clust = km.fit_predict(t)<EOL>clusters.append(clust)<EOL><DEDENT>clusterings = np.vstack(clusters)<EOL>consensus = CE.cluster_ensembles(clusterings, verbose=False, N_clusters_max=k)<EOL>init_m, init_w = nmf_init(data, consensus, k, '<STR_LIT>')<EOL>M, W, ll = poisson_estimate_state(data, k, init_means=init_m, init_weights=init_w, **se_params)<EOL>return M, W, ll<EOL>
Initializes state estimation using a consensus of several
fast clustering/dimensionality reduction algorithms.

It does a consensus of 8 truncated SVD - k-means rounds, and uses the
basic nmf_init to create starting points.