Why does my text clustering do this
<p>I have an unlabeled dataset with product names. For example, baseball shirt, bomber jacket, active classic boxer, etc. </p>

<p>I created a tf-idf matrix with the data then I ran k-means on the matrix. I plotted a within-cluster sum of squares to find the best k which is 5. </p>

<p>After clustering I figured out the cosine similarity between documents</p>

<pre><code># cosine similarity between each document
from sklearn.metrics.pairwise import cosine_similarity
dist = 1.0 - cosine_similarity(tfidf_matrix)
print dist
</code></pre>

<p>Then I used MDS on dist to reduce it to 2 dimensions so I can plot the clusters</p>

<pre><code>from sklearn.manifold import MDS
mds = MDS(n_components=2, dissimilarity="precomputed", random_state=1)
xs, ys = pos[:, 0], pos[:, 1]
</code></pre>

<p>The cluster plot looks pretty good except for the circumference. Is there a reason why it is doing this? The rest of the clusters seem like they are clustering around a similar area.</p>

<p><a href="http://i.stack.imgur.com/qD1MX.png" rel="nofollow"><img src="http://i.stack.imgur.com/qD1MX.png" alt="enter image description here"></a></p>

<p>TF-IDF only works for <strong>long text</strong>.</p>

<p>Because of this, almost every document is completely different from every other, and they "fan out" like this.</p>

<p>I doubt that k-means worked either.</p>

python scikit-learn cluster-analysis k-means tf-idf