2 回答

TA貢獻1796條經驗 獲得超7個贊
當我按定義執行逆變換時,它不應該返回原始數據
不,如果您指定的組件數量與輸入數據的維度相同,您只能期待這一點。對于任何小于此值的 n_components,在應用逆 PCA 變換后,您將獲得與原始數據集不同的數字:下圖給出了二維說明

TA貢獻1873條經驗 獲得超9個贊
它不能這樣做,因為通過使用 PCA 減少維度,您丟失了信息(檢查pca.explained_variance_ratio_
您仍然擁有的信息百分比)。但是,它盡量回到原來的空間,看下圖
(生成與
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),您確實恢復了原始點(新點位于原始點之上):
添加回答
舉報