PCA图减少维数

时间:2019-02-27 17:51:01

标签: python matplotlib pca dimensionality-reduction

我尝试使用PCA技术进行群集。

就我而言,我已经审查了n部电影的用户。 我以这种方式创建了一个表用户x电影:

User    Movie
        0 1 2 3 4 
      0 2 0 5 0 0
      1 0 1 1 0 0
      2 0 5 5 5 0

如果用户不评论电影,则为0,如果用户评论1至5星,则为1-5。 形状是(6040,3706)

我规范化数据,然后 我将此代码用于PCA(来自sklearn)

pca = PCA(0.7)
pca_result = pca.fit_transform(X_std)

a = pca_result[:,0]
b = pca_result[:,1] 

我将0.7用于聚类,因为我的累积解释方差 enter image description here

所以对我来说是非常有意义的值0.7 我的新形状是(6040,650)

我看到尺寸将以这种方式绘制(但我认为这不是很重要)

fig = plt.figure(figsize = (20,16))
ax = fig.add_subplot(111)


ax.scatter(a,b, alpha = 1)
plt.title('Method: PCA')
plt.show()

但是通过这种方式,我将A放在X轴上,将B放在Y轴上,所以我想只使用两个维度(因为我看到了所有带有两个维度的示例)。

enter image description here

所以我的问题是我不绘制所有尺寸吗? (就我而言,还剩下650个尺寸?) 我在做什么错了?

也许我的问题可能很愚蠢,但是我试图理解这个话题。

1 个答案:

答案 0 :(得分:2)

请勿使用0编码缺失值(特别是PCA除外)。

这是5的最大差异,因此实质上,您现在就假设用户讨厌所有他们未评价的电影。

我不知道是否有任何PCA变体可以处理丢失的数据。通常,它似乎假定您具有所有值。因此,您可能需要选择其他算法。