【发布时间】: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