簡體   English   中英

使用 Python 和 Numpy 對高維數據進行 PCA

[英]PCA for high dimensional data using Python and Numpy

我必須為 Python 中的高維數據的 PCA 實施 function,但我在某個時候卡住了。 對於低維數據,我希望 function 返回與我的 function 相同的主成分。 我已經搜索了一個解決方案並找到了一些提示,但缺少一些東西。

我希望有一個人可以幫助我。

these are the steps to create the principal components for the standard PCA routine:

X_normalized

array([[-0.41873524,  0.16431545, -0.56998025, -0.11733312],
       [-0.28466524,  0.30149955,  0.68094323, -0.35746243],
       [ 0.74718755, -1.46799525, -1.38690518,  0.29022802],
       [ 0.51785433,  0.2600977 ,  2.48749719,  0.79531581],
       [-0.56164139,  0.74208255, -1.211555  , -0.61074828]])

# N: number of observations, D: dimensions
N, D = X_normalized.shape

# create covariance matrix
S = np.dot(X_normalized.T, X_normalized) / N

# eigenvalues, eigenvectors
eig_vals, eig_vecs = np.linalg.eig(S)

# next, I can use the eigenvalues and eigenvectors to create the select the principle components

對於高維數據的 PCA,我使用以下代碼:

# create 
S = np.dot(X_normalized, X_normalized.T) / N

# eigenvalues, eigenvectors
eig_vals, eig_vecs = np.linalg.eig(S)

正如預期的那樣,特征值與標准 PCA 例程返回的值完全相同。 特征向量是一個 N x N 矩陣。

我明白,我必須將 X * XT 的特征向量與 XT 相乘到常規協方差矩陣的特征向量但是

np.dot(X_normalized.T, eig_vecs)

返回不同的東西。 我在這里錯過了什么?

親切的問候,斯蒂芬

我期待從高維數據的 PCA 例程中獲得與常規 PCA function 完全相同的特征向量。

...終於找到了解決我的問題的方法。 我只需要標准化特征向量(列)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM