我正在尝试使用 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)
我想要两个以上特征向量的原因是因为根据下图,我猜我的数据不是很明显可分离的,所以我想找到更多维度来绘制我的数据。我的直觉正确吗?
