def Inner_GMM(SingleGenreSongs,numOfClusters):
means = [item.mean_timbreVec for item in SingleGenreSongs]
means_array = np.array(means)
model = mixture.GMM(n_components = numOfClusters,covariance_type = 'full',n_init = 10)
model.fit(means)
lbls = model.predict(means)
clusters_mean = [[] for i in range(numOfClusters)];
clusters_cov = [[] for i in range(numOfClusters)];
clusters_cnt = [0 for i in range(numOfClusters)];
ret_clusters_mean = [[] for i in range(numOfClusters)];
ret_clusters_cov = [[] for i in range(numOfClusters)];
assert(len(lbls) == len(SingleGenreSongs))
for i in range(len(lbls)):
lb = lbls[i]
clusters_mean[lb].append(np.array(SingleGenreSongs[i].mean_timbreVec))
clusters_cov[lb].append(np.array(SingleGenreSongs[i].cov_timbreVec))
clusters_cnt[lb] += 1
for i in range(numOfClusters):
# print type(clusters_mean[i][0])
ret_clusters_mean[i] = sum(clusters_mean[i])
ret_clusters_cov[i] = sum(clusters_cov[i])
# print type(ret_clusters_mean[i][0])
ret_clusters_mean[i] = [(item)/clusters_cnt[i] for item in ret_clusters_mean[i]]
ret_clusters_cov[i] = [(item)/clusters_cnt[i] for item in ret_clusters_cov[i]]
return ret_clusters_mean,ret_clusters_cov
# return model.means_,model.covars_
评论列表
文章目录