我尝试使用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 我的新形状是(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轴上,所以我想只使用两个维度(因为我看到了所有带有两个维度的示例)。
所以我的问题是我不绘制所有尺寸吗? (就我而言,还剩下650个尺寸?) 我在做什么错了?
也许我的问题可能很愚蠢,但是我试图理解这个话题。
答案 0 :(得分:2)
请勿使用0编码缺失值(特别是PCA除外)。
这是5的最大差异,因此实质上,您现在就假设用户讨厌所有他们未评价的电影。
我不知道是否有任何PCA变体可以处理丢失的数据。通常,它似乎假定您具有所有值。因此,您可能需要选择其他算法。