gpt4 book ai didi

python - Sklearn PCA,如何恢复较低维度的均值?

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:22 24 4
gpt4 key购买 nike

这个问题是关于如何在执行 PCA 后将数据去中心化并“还原”到较低维度的数据。

我正在做一个简单的 principal component analysis与sklearn。据我了解,实现应该注意(1)在创建组件时使数据居中以及(2)在转换后使数据去中心化。但是,在转换数据后它仍然居中。如何在保留原始数据特征的同时将数据投影到低维空间?鉴于我要对高维数据进行降维,我不会为每个主成分提供适当的均值,如何推导?

将 3 个维度缩减为 2 个维度:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

X = np.array([[-1, -1, -1], [-2, -1, -1], [-3, -2, -3], [1, 1, 1], [2, 1, 2], [3, 2, 3]]) + 3
X.shape

(6, 3)

fig = plt.figure(figsize=(10, 8), dpi= 80, facecolor='w', edgecolor='k')
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:,0], X[:,1],X[:,2], '*')
plt.title('original')
plt.show()

enter image description here

具有 2 个组件的 PCA:

pca = PCA(n_components=2)
pca.fit(X)
X_trans =pca.transform(X)
X_trans.shape

(6, 2)

plt.plot(X_trans[:,0], X_trans[:,1], '*')
plt.show()

enter image description here

我在这个阶段想做的是在这个较低的维度上“恢复”我的数据,使得数据点的值与原始数据相对应。它应该仍然只有 2 个维度,但不以平均值为中心。

按照下面的建议执行逆变换,实际上让我回到了 3 维

X_approx = pca.inverse_transform(X_trans) 
X_approx.shape

(6, 3)

我想保持二维,但我的数据仍然尽可能接近原始形式,而不是以均值为中心。

最佳答案

您只是在拟合数据并绘制转换后的数据。要以较低的维度恢复原始数据,您需要使用 inverse_transform这会返回原始数据,如下图所示。来自docs :

inverse_transform(X)

Transform data back to its original space.

pca = PCA(n_components=2)
pca.fit(X)

X_trans =pca.transform(X)
X_original = pca.inverse_transform(X_trans)
plt.plot(X_original[:,0], X_original[:,1], 'r*')

enter image description here

关于python - Sklearn PCA,如何恢复较低维度的均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com