I have a dataframe of the form
| user_ID | cat1 | cat2 | ..... |cat 2125 |
234 1.0 0.0 0.0
125 0.0 1.0 0.0
542 0.0 1.0 1.0
...
This dataset represents user votes on 2125 books. Each category column stands for one book. It contains either a 1.0, for a vote given by that user or a 0.0, for no vote.
I want to cluster these users by the books they voted for. I realize I first need to reduce dimensionality. I tried PCA
and TruncatedSVD
, with k-Means
clustering afterwards. In both cases, the clusters I get are irrelevant (users usually have no books in common).
My only constraint here is that i must use k-Means
(since I need the coordinates of the centroids). I suspect that my dimensionality reduction is not good though.
Can someone please offer some advice as to what I should do?