В NumPy нет функции pca(), но мы можем легко рассчитать анализ основных компонентов шаг за шагом, используя функции NumPy.
В приведенном ниже примере определяется небольшая матрица 3 × 2, центрируются данные в матрице, вычисляется ковариационная матрица центрированных данных, а затем собственное разложение ковариационной матрицы. Собственные векторы и собственные значения берутся как главные компоненты и сингулярные значения и используются для проецирования исходных данных.
(.env) boris@boris-All-Series:~/MATRIXPCA$ cat matrixPCA2.py
from numpy import array
from numpy import mean
from numpy import cov
from numpy.linalg import eig
# Define a matrix
A = array([[4, 5], [6, 7], [8, 9]])
print("Defined a matrix = ","\n",A)
# calculate the mean of each column
M = mean(A.T, axis=1)
print("Calculate the mean of each column = ",M)
# center columns by subtracting column means
C = A - M
print("Center columns by subtracting column means = ","\n",C)
# calculate covariance matrix of centered matrix
V = cov(C.T)
print("Covariance matrix of centered matrix = ","\n",V)
# eigendecomposition of covariance matrix
values, vectors = eig(V)
print("Vectors = ","\n",vectors)
print("Values = ", values)
# project data
P = vectors.T.dot(C.T)
print("Project data = ","\n",P.T)
(.env) boris@boris-All-Series:~/MATRIXPCA$ python3 matrixPCA2.py
Defined a matrix =
[[4 5]
[6 7]
[8 9]]
Calculate the mean of each column = [6. 7.]
Center columns by subtracting column means =
[[-2. -2.]
[ 0. 0.]
[ 2. 2.]]
Covariance matrix of centered matrix =
[[4. 4.]
[4. 4.]]
Vectors =
[[ 0.70710678 -0.70710678]
[ 0.70710678 0.70710678]]
Values = [8. 0.]
Project data =
[[-2.82842712 0. ]
[ 0. 0. ]
[ 2.82842712 0. ]]
No comments:
Post a Comment