【问题标题】:PCA plot reduction dimensionalityPCA 图降维
【发布时间】:2019-07-21 12:52:53
【问题描述】:

我尝试使用 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 用于集群,因为我的累积解释方差

所以对我来说是非常具有代表性的价值 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 个维度?) 我做错了什么?

也许我的问题可能很愚蠢,但我正在努力理解这个话题。

【问题讨论】:

  • 您针对 650 个“幸存”因素绘制了 a 值与 b 值。我希望您上面的图有 650 个数据点。或者也许这是所有 3706 个点的变量图,接近 0 的点是最不重要的。我不知道,因为你没有包含足够的代码来遵循算法。
  • 对我来说 a 和 b 是 6040 的 2 个向量 @Prune 我没有更多代码,在此代码之前我只是使用 sklearn 的归一化并为电影创建一个矩阵用户......没什么很多

标签: python matplotlib pca dimensionality-reduction


【解决方案1】:

不要使用 0 来编码缺失值(特别是,不能使用 PCA)。

这是与 5 分的最大差异,所以本质上你现在假设用户讨厌他们没有评分的所有电影。

我不知道是否有任何 PCA 变体可以处理缺失数据。通常它似乎假设你拥有所有的价值观。所以你可能需要选择其他算法。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2021-04-04
    • 2018-01-28
    • 2018-08-27
    • 2017-08-05
    • 2013-03-06
    • 2022-09-30
    • 2013-03-03
    • 2015-02-28
    相关资源
    最近更新 更多