Правильно ли написан мой код PCA в Python? - PullRequest
0 голосов
/ 28 мая 2020

Я провожу исследование, для которого требуется график PCA, поэтому я могу видеть шаблоны агломерации графиков благодаря уменьшению размерности, которое обеспечивает PCA. Итак, я нашел код и хотел быть уверенным, что он делает то, что должен делать: график PCA. Дело в том, что я не знаю, верен ли код на 100%, потому что я думаю, что для работы PCA нам сначала не нужно стандартизировать данные, чтобы среднее значение для каждого измерения было 0, а я не мог ' t укажите это в коде. Я пишу это в надежде найти кого-нибудь, у кого есть опыт выполнения PCA, чтобы просветить меня. Спасибо, вот код:

import numpy as np
import matplotlib.pyplot as plt

with open('B0.txt', 'r') as simulation_data:
    simulation_data = [x.strip() for x in simulation_data if x.strip()]

    data = [tuple(map(float, x.split())) for x in simulation_data[2:]]  

    x = [x[1] for x in data]
    y = [x[2] for x in data]
    z = [x[3] for x in data]
    mx = [x[4] for x in data]
    my = [x[5] for x in data]
    mz = [x[6] for x in data]


dados = np.array([x, y, z, mx, my, mz])


matriz_cov = np.cov(dados)


v, w = np.linalg.eig(matriz_cov)

ordem = v.argsort()

maiorautovetor = w[:, ordem[-1]]
segundomaiorautovetor = w[:, ordem[-2]]     

Wpca = np.array([maiorautovetor, segundomaiorautovetor])

novos_dados = np.dot(Wpca, dados)

plt.figure(1)
plt.scatter(novos_dados[0, :], novos_dados[1, :])
plt.show()

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