Я провожу исследование, для которого требуется график 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)