Я пытаюсь реализовать PCA, используя чистый код Python. У меня есть файл CSV. Я читаю все столбцы и строки из CSV и изменяю его на матричную форму, затем вычисляю и нахожу среднее значение и ковариацию матрицы, теперь я пытаюсь написать функцию для поиска собственного значения и собственного вектора моей ковариационной матрицы. .
Мой вопрос: как решить эту часть, чтобы найти собственное значение и собственный вектор? Для этого шага у меня есть функция, чтобы найти определитель матрицы, но проблема с лямбда-символом здесь его (x) --- (A-λI) = 0.
Среднее Матрица
24 24 25 26 26
Ковариационная матрица (сумма (x-Xb) * (y - Yb)) / n-1
175 151 162 173 172
151 185 177 177 177
162 177 222 195 192
173 177 195 234 200
172 177 192 200 238
Идентификационная матрица
x 0 0 0 0
0 x 0 0 0
0 0 x 0 0
0 0 0 x 0
0 0 0 0 x
175-x 151 162 173 172
151 185-x 177 177 177
162 177 222-x 195 192
173 177 195 234-x 200
вот мой код для определителя, теперь как изменить приведенный ниже код для вычисления вышеуказанной (A-λI) матрицы?
def getCofactor(mat,temp, p,q,n):
i = 0
j = 0
for row in range(n):
for col in range(n):
if (row != p and col != q):
temp[i][j] = mat[row][col]
j+=1
if (j == n - 1):
j = 0
i+=1
return temp
def determinantOfMatrix(mat,n):
D = 0 # Initialize result
if (n == 1):
return mat[0][0]
temp = [[[] for x in range(n)] for y in range(n)]
sign = 1;
for f in range(n):
getCofactor(mat, temp, 0, f, n)
D += sign * mat[0][f] * determinantOfMatrix(temp, n - 1);
sign = -sign;
return D