2017-06-17 42 views
0

所以我对python(和R)和单词向量很陌生,一直在坚持如何完成我的下一步学习如何可视化。虽然我正在尝试使用python,但我仍然愿意将其应用于R。我将简要解释我得到了多少以及我想去哪里。聚类和绘制单词向量-python or R

因此,我有一个用户列表,收到与该用户关联的10部电影的列表。我已经设法得到清单,创建一个输出csv文件,并匹配用户属性,如性别,年龄,位置等。我已经提取和创建了电影的属性,以及类型和制作年份。

但接下来,我试图将用户聚类,以查看电影列表与每个用户的相似程度。我这样做的方式是,我已经提取了每部电影的类型并将它们放入列表中。因此,具有说用户1'喜剧',戏剧',浪漫喜剧'的用户的用户将类似于喜欢喜剧,浪漫但不喜欢'恐怖','犯罪'的用户3的另一用户2, “惊悚片”。我想象的是基于这些流派的5-6个群组(如'行动','喜剧','戏剧','家庭','恐怖')。如果我策划,我会看到喜欢看用户1和用户2在一个群组中(围绕喜剧群集),用户3在另一群组(靠近恐怖群集)等等。然后,我可以根据年龄,性别等对这些情节进行着色,以查看与同类电影相同的年龄组,还是会看到更多的男性更接近“动作”电影集群,更多的女性更喜欢“浪漫”?

这就是我卡住的地方。我已经看着sckit来试图描绘这一点,但不知道该去哪里。这些列表也有不同的长度,我已经能够获得用户相对于其他用户的余弦相似度。我设法创建了用户号码的数据框和第二列中的流派列表。我已经设法创建一个csv文件,并将用户和流派分开放在自己的专栏中。我现在如何获取这些信息并将其聚集或绘制在向量空间中?下面是我已经能够构造并用于计算不同用户之间的余弦相似度的数据帧。

ID Genre 
0 1 ['Adventure', ""Children's"", 'Drama', 'Comedy', 'Musical', 'Horror', 'Drama', 'Drama', 'Mystery', 'Documentary', 'Comedy', 'Drama', 'Romance', 'Drama', 'Comedy', 'Romance']" 
1 2 ['Horror', 'Mystery', 'Thriller', 'Documentary', 'Action', 'Comedy', 'Musical', 'Sci-Fi', 'Horror', 'Sci-Fi', 'Thriller', 'Adventure', 'Animation', ""Children's"", 'Musical', 'Romance', 'Documentary', 'Action', 'Adventure', 'Western', 'Comedy', 'Drama', 'Comedy']" 
2 3 ['Documentary', 'Drama', 'Thriller', 'Documentary', 'Comedy', 'Horror', 'Drama', 'Romance', 'Documentary', 'Comedy', 'Drama', 'Romance', 'Action', 'Adventure', 'Sci-Fi', 'War', 'Drama'] 
3 4 ['Drama', 'War', 'Drama', 'Drama', 'Romance', 'Action', 'Thriller', 'Comedy', 'Horror', 'Horror', 'Comedy', 'Musical', 'Crime', 'Drama', 'Horror', 'Comedy', 'Horror'] 
4 5 ['Documentary', 'Drama', 'Documentary', 'Comedy', 'Romance', 'Drama', 'Horror', 'Comedy', 'Drama', 'Animation', ""Children's"", 'Action', 'Drama', 'Drama', 'Comedy', 'Romance']" 
5 6 ['Horror', 'Documentary', 'Comedy', 'Horror', 'Drama', 'Drama', 'Drama', 'Action', 'Comedy', 'Comedy', 'Horror'] 
... 

回答

1

我不确定你真的想做什么,但如果情感分析是你的目标,我会建议你这样做。

a = ['Horror', 'Mystery', 'Thriller', 'Documentary', 'Action', 'Comedy', 'Musical', 'Sci-Fi', 'Horror', 'Sci-Fi', 'Thriller', 'Adventure', 'Animation', 'Musical', 'Romance', 'Documentary', 'Action', 'Adventure', 'Western', 'Comedy', 'Drama', 'Comedy'] 

>>> b= set(a) 

>>> b 
{'Action', 'Romance', 'Documentary', 'Sci-Fi', 'Adventure', 'Musical', 'Animation', 'Thriller', 'Western', 'Drama', 'Comedy', 'Horror', 'Mystery'} 

现在,您可以电影类型转换为数值,如

'Action' = 1 

之后,你可以集群中的数据,但算法的选择也不是那么simple.You可以使用k均值,模糊c表示或其他一些算法。您可以阅读更多关于此的信息here