我正在研究mnist数据集的PCA,我得到了一个非常奇怪的结果,我创建了一个矩阵,它的行是扁平的mnist图像,当我试图计算协方差矩阵的特征值时,我得到了一些负值。但协方差矩阵是半正定的。
np.linalg.eigvals(np.dot(mnistBis[:, 0:20].T, mnistBis[:, 0:20])) # mnistBis.shape=(60000, 784)
array([ 4.79599869e+02, -1.19628465e+02, 9.68398702e+01, 1.88726171e-01,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00])
修改:这是完整的代码
import tensorflow.keras.datasets.mnist as mnist
import matplotlib.pyplot as plt
import numpy as np
(x_train, y_train), (x_test, y_test) = mnist.load_data()
mnistBis = np.reshape(x_train, (-1, 28*28))
np.linalg.eigvalsh(np.dot(mnistBis[:, 0:20].T, mnistBis[:, 0:20]))
```
发布于 2021-06-25 15:02:24
这可能是浮点错误的结果。
矩阵为60000×20和稀疏(大部分为零)。计算的结果是非常接近于零的值,计算机没有正确地表示这些值。
https://datascience.stackexchange.com/questions/91215
复制相似问题