Использование np.cov () на центрированной матрице не эквивалентно умножению матриц между массивом и его транспонированием - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь получить собственные векторы и значения для набора данных MNIST. Я тестирую концепцию набора данных, чтобы я мог перенести ее в другой набор данных.

У меня есть матрица M, где строки - это изображения, а столбцы - значения пикселей. Я пытаюсь сделать это двумя способами (взято из https://mml-book.github.io/book/mml-book.pdf, глава 10, раздел 1 и раздел 5):

M имеет форму 500 строк x 784 столбца

Сначала я использую следующий код:

  V = cov(M.T)

, а затем:

  V2 = np.dot(matrix.T,matrix) / 783

Согласно руководству numpy по cov (), кажется, что с одной переменной, заданной I, результаты обеих должны быть идентичны, но это не так. https://numpy.org/doc/stable/reference/generated/numpy.cov.html

извините, если вопрос прост и есть очевидный ответ

РЕДАКТИРОВАТЬ: если я возьму наивысший собственный вектор обоих методов и масштабируйте его так, чтобы наименьшее число было равно нулю, а наибольшее - 255, я получаю тот же вектор. Что мне здесь не хватает?

...