如何解决在PCA中获取两个以上特征值时出错
我正在尝试使用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,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)
我想要两个以上的特征向量的原因是,根据下面的图片,我想我的数据显然不是可分离的,所以我想找到更多的维度来绘制数据。我的直觉是正确的吗?
解决方法
问题已解决。 eigvals将参数设为(lo,hi)。因此,除了指定(781,782,783)之外,我还需要指定lo = 781和hi = 783以获得前3个特征值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。