Использование np.linalg.norm для проверки собственных векторов в PCA - PullRequest
0 голосов
/ 10 февраля 2019

Я следовал учебнику по PCA Я подошел к точке выбора основных компонентов.

Это ссылка для учебника по PCA:

Я застрял в этой точке кода.Я не мог понять, что он на самом деле делает?

eigen_values, eigen_vectors = np.linalg.eig(cor_mat2)

for ev in eigen_vectors:
    np.testing.assert_array_almost_equal(1.0, np.linalg.norm(ev))
print('Everything ok!')

Я действительно ценю, если кто-нибудь может помочь мне понять.

Что проверяет np.linalg.norm здесь?

1 Ответ

0 голосов
/ 10 февраля 2019

Как можно прочитать из документации np.linalng.norm , эта функция вычисляет L2 Norm вектора.

Все, что делает этот цикл, - это гарантирует, что каждый eigenvectorдлины единицы, поэтому важность каждого собственного вектора для представления данных можно сравнить, используя eigenvalues.

Собственные векторы охватывают новую основу для вашей проекции, и, как таковые, они имеют длину единицы (как описано в статье),Они не должны были бы быть, но так проще, вы можете думать об этом как о новой оси x y z в 3D (такая каноническая основа всегда состоит из векторов, содержащих нули во всех измерениях и один в одном месте, x будет вектором (1, 0, 0), y будет (0, 1, 0) и z (0, 0, 1)).

Чтобы получить новые направления, содержащие большую часть информации о данных (по крайней мере, по линейной величине, с наибольшей дисперсией) и выполнить уменьшение размерности желаемого размера (скажем, N), нам придется сравнить их "влияние »на данные.Это то, для чего используются собственные значения, поскольку собственные векторы нельзя сравнивать с единицами, нормированными на один и тот же (единичный) масштаб.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...