pca.inverse_transform 在 sklearn 中
pca.inverse_transform in sklearn
将我的数据拟合到
X = 我的数据
pca = PCA(n_components=1)
pca.fit(X)
X_pca = pca.fit_transform(X)
现在 X_pca 有一个维度。
当我按照定义执行逆变换时,它不是应该return到原始数据,即X,二维数组吗?
当我
X_ori = pca.inverse_transform(X_pca)
我得到相同的维度,但数字不同。
此外,如果我同时绘制 X 和 X_ori,它们是不同的。
它不能这样做,因为通过使用 PCA 减少维度,您丢失了信息(检查 pca.explained_variance_ratio_
以了解您仍然拥有的信息百分比)。但是,它会尽力回到原来的 space ,见下图
(由
生成
import numpy as np
from sklearn.decomposition import PCA
pca = PCA(1)
X_orig = np.random.rand(10, 2)
X_re_orig = pca.inverse_transform(pca.fit_transform(X_orig))
plt.scatter(X_orig[:, 0], X_orig[:, 1], label='Original points')
plt.scatter(X_re_orig[:, 0], X_re_orig[:, 1], label='InverseTransform')
[plt.plot([X_orig[i, 0], X_re_orig[i, 0]], [X_orig[i, 1], X_re_orig[i, 1]]) for i in range(10)]
plt.legend()
plt.show()
)
如果你保持 n_dimensions 相同(设置 pca = PCA(2)
,你确实恢复了原始点(新点在原始点之上):
When I perform inverse transformation by definition isn't it supposed to return to original data
不,只有当您指定的组件数量与输入数据的维数相同时,您才能期望这一点。对于任何小于此的 n_components,在应用逆 PCA 变换后,您将得到与原始数据集不同的数字:下图给出了二维的说明。
将我的数据拟合到 X = 我的数据
pca = PCA(n_components=1)
pca.fit(X)
X_pca = pca.fit_transform(X)
现在 X_pca 有一个维度。
当我按照定义执行逆变换时,它不是应该return到原始数据,即X,二维数组吗?
当我
X_ori = pca.inverse_transform(X_pca)
我得到相同的维度,但数字不同。
此外,如果我同时绘制 X 和 X_ori,它们是不同的。
它不能这样做,因为通过使用 PCA 减少维度,您丢失了信息(检查 pca.explained_variance_ratio_
以了解您仍然拥有的信息百分比)。但是,它会尽力回到原来的 space ,见下图
(由
生成import numpy as np
from sklearn.decomposition import PCA
pca = PCA(1)
X_orig = np.random.rand(10, 2)
X_re_orig = pca.inverse_transform(pca.fit_transform(X_orig))
plt.scatter(X_orig[:, 0], X_orig[:, 1], label='Original points')
plt.scatter(X_re_orig[:, 0], X_re_orig[:, 1], label='InverseTransform')
[plt.plot([X_orig[i, 0], X_re_orig[i, 0]], [X_orig[i, 1], X_re_orig[i, 1]]) for i in range(10)]
plt.legend()
plt.show()
)
如果你保持 n_dimensions 相同(设置 pca = PCA(2)
,你确实恢复了原始点(新点在原始点之上):
When I perform inverse transformation by definition isn't it supposed to return to original data
不,只有当您指定的组件数量与输入数据的维数相同时,您才能期望这一点。对于任何小于此的 n_components,在应用逆 PCA 变换后,您将得到与原始数据集不同的数字:下图给出了二维的说明。