Python 选择最佳聚类数,图中不“;“肘击”;PCA后的输出和聚类&;TSNE不一致
我正在研究一个职位推荐系统。每个帖子都有一个标题和类别。我使用这个类别并实现了tf-idf来提取关键字,并应用mini-batch k方法进行聚类Python 选择最佳聚类数,图中不“;“肘击”;PCA后的输出和聚类&;TSNE不一致,python,machine-learning,k-means,pca,recommender-systems,Python,Machine Learning,K Means,Pca,Recommender Systems,我正在研究一个职位推荐系统。每个帖子都有一个标题和类别。我使用这个类别并实现了tf-idf来提取关键字,并应用mini-batch k方法进行聚类 def find_optimal_clusters(data, max_k): iters = range(5,max_k+1, 5) sse = [] for k in iters: sse.append(MiniBatchKMeans(n_clusters=k,
def find_optimal_clusters(data, max_k):
iters = range(5,max_k+1, 5)
sse = []
for k in iters:
sse.append(MiniBatchKMeans(n_clusters=k,
init_size=512,
batch_size=1024,
random_state=20).fit(data).inertia_)
f, ax = plt.subplots(1, 1)
ax.plot(iters, sse, marker='o')
ax.set_xlabel('Cluster Centers')
ax.set_xticks(iters)
ax.set_xticklabels(iters)
ax.set_ylabel('SSE')
ax.set_title('SSE by Cluster Center Plot')
find_optimal_clusters(matrix, 250)
图表有点像这样。
通过PCA和TSNE绘制的聚类图如下:
相同的代码:
def plot_tsne_pca(data, labels):
max_label = max(labels)
max_items = np.random.choice(range(data.shape[0]), size=500, replace=True)
pca = PCA(n_components=2).fit_transform(data[max_items,:].todense())
tsne = TSNE().fit_transform(PCA(n_components=50).fit_transform(data[max_items,:].todense()))
idx = np.random.choice(range(pca.shape[0]), size=500, replace=True)
label_subset = labels[max_items]
label_subset = [cm.hsv(i/max_label) for i in label_subset[idx]]
f, ax = plt.subplots(1, 2, figsize=(14, 6))
ax[0].scatter(pca[idx, 0], pca[idx, 1], c=label_subset)
ax[0].set_title('PCA Cluster Plot')
ax[1].scatter(tsne[idx, 0], tsne[idx, 1], c=label_subset)
ax[1].set_title('TSNE Cluster Plot')
plot_tsne_pca(matrix, clusters)
从本质上讲,除了225个集群之外,没有一个肘部,这似乎是一个巨大的集群,在我通读了每个集群的顶部关键字之后,它们已经不连贯了。
我该怎么做