yan*_*jie 17
1)transform不是data * pca.components_.
首先,*不是numpy数组的点积.它是元素乘法.要执行点积,您需要使用np.dot.
其次,形状PCA.components_是(n_components,n_features)而变形的数据形状是(n_samples,n_features),所以你需要转置PCA.components_来执行点积.
此外,变换的第一步是减去均值,因此如果你手动完成,你还需要先减去均值.
正确的转换方式是
data_reduced = np.dot(data - pca.mean_, pca.components_.T)
Run Code Online (Sandbox Code Playgroud)
2)inverse_transform只是逆过程transform
data_original = np.dot(data_reduced, pca.components_) + pca.mean_
Run Code Online (Sandbox Code Playgroud)
例如,如果您的数据在每列中的均值为零,则可以忽略pca.mean_上述内容
import numpy as np
from sklearn.decomposition import PCA
pca = PCA(n_components=3)
pca.fit(data)
data_reduced = np.dot(data, pca.components_.T) # transform
data_original = np.dot(data_reduced, pca.components_) # inverse_transform
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7243 次 |
| 最近记录: |