Python 选择最佳聚类数,图中不“;“肘击”;PCA后的输出和聚类&;TSNE不一致

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,

我正在研究一个职位推荐系统。每个帖子都有一个标题和类别。我使用这个类别并实现了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,
                                   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个集群之外,没有一个肘部,这似乎是一个巨大的集群,在我通读了每个集群的顶部关键字之后,它们已经不连贯了。 我该怎么做