在尝试执行PCA和仅保留两个作曲家之后,我试图在比托恩计算Hotelling的t平方统计量。我正在使用sklearn和numpy。
def get_pca(X, n=2, scale=True):
if scale:
scale = StandardScaler()
scale.fit(X)
X_scaled = scale.transform(X)
else:
X_scaled = X
pca = PCA(n_components=n)
pca.fit(X_scaled)
return scale, pca, pca.transform(X_scaled)
def get_mu(T):
return [np.mean(T[:, k]) for k in range(T.shape[1])]
def get_SD(pcs, mu):
sigma = np.linalg.inv(np.cov(pcs.T))
SD = np.zeros(len(pcs), dtype='float')
for i in range(len(pcs)):
temp = np.subtract(pcs[i], mu)
SD[i] = temp.dot(sigma).dot(temp.T)
return SD
但是我认为这有些问题。计算在我的代码中正确吗?