【问题标题】:Error getting more than two eigenvalues in PCA在 PCA 中获取两个以上特征值时出错
【发布时间】:2020-10-18 02:42:35
【问题描述】:

我正在尝试使用 Python 从头开始​​对 MNIST 数据的子集(数字 0 和 1)执行 PCA。 (注意:x_train_0_scaled 的尺寸为:5923x784,其中 5923 是图像数量,784 是 28*28 展平的像素值)

这是我查找特征值的代码:


# matrix multiplication using numpy
covar_matrix = np.matmul(x_train_0_scaled.T, x_train_0_scaled)

print("The shape of variance matrix = ", covar_matrix.shape)

# the parameter 'eigvals' is defined (low value to heigh value)
# eigh function will return the eigen values in asending order
# this code generates only the top 2 (782 and 783)(index) eigenvalues.
values, vectors = eigh(covar_matrix, eigvals=(782, 783))

print("Shape of eigen vectors = ", vectors.shape)

但是,当我尝试获取两个以上的特征值时,我得到了这个错误:

    values, vectors = eigh(covar_matrix, eigvals=(782, 783, 781))
  File "/usr/local/lib/python3.8/site-packages/scipy/linalg/decomp.py", line 484, in eigh
    lo, hi = [int(x) for x in subset_by_index]
ValueError: too many values to unpack (expected 2)

我想要两个以上特征向量的原因是因为根据下图,我猜我的数据不能清楚地分离,所以我想找到更多维度来绘制我的数据。我的直觉正确吗?

【问题讨论】:

    标签: python machine-learning seaborn pca


    【解决方案1】:

    问题已解决。 eigvals 将参数作为 (lo, hi)。因此,我需要指定 lo=781 和 hi=783 来获取前 3 个特征值,而不是指定 (781,782, 783)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 2023-04-05
      • 2012-05-12
      相关资源
      最近更新 更多