亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sklearn 中的 pca.inverse_transform

sklearn 中的 pca.inverse_transform

一只斗牛犬 2021-12-29 20:29:31
將我的數據擬合成 X = 我的數據后pca = PCA(n_components=1)pca.fit(X)X_pca = pca.fit_transform(X)現在 X_pca 有一個維度。當我按定義執行逆變換時,它不應該返回原始數據,即X,二維數組嗎?當我做X_ori = pca.inverse_transform(X_pca)我得到相同的尺寸但不同的數字。此外,如果我同時繪制 X 和 X_ori 它們是不同的。
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

當我按定義執行逆變換時,它不應該返回原始數據

不,如果您指定的組件數量與輸入數據的維度相同,您只能期待這一點。對于任何小于此值的 n_components,在應用逆 PCA 變換后,您將獲得與原始數據集不同的數字:下圖給出了二維說明

http://img1.sycdn.imooc.com//61cc54c90001c09b07310739.jpg

查看完整回答
反對 回復 2021-12-29
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

它不能這樣做,因為通過使用 PCA 減少維度,您丟失了信息(檢查pca.explained_variance_ratio_您仍然擁有的信息百分比)。但是,它盡量回到原來的空間,看下圖 

http://img1.sycdn.imooc.com//61cc54da0001e83603730249.jpg

(生成與


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),您確實恢復了原始點(新點位于原始點之上):

http://img1.sycdn.imooc.com//61cc54e70001ae6b03730247.jpg

查看完整回答
反對 回復 2021-12-29
  • 2 回答
  • 0 關注
  • 621 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號