daweii
2022-02-12 19:36:53 +08:00
我知道你问的是什么了。我忘了看问题的后半部分了。
> PCA 呢,你给一个 mxn 图片降维后,得到一组新空间的基底。你再给一个 mxn 的新图片降维,又会生成一组新空间的基底。假设我们都保留 95%的方差,这两组基底的数量可能不同吧?两组基底的第一主成分向量方向也可能不同吧?第一主成分保留的方差百分比也不同吧?所以好像也没有什么比较固定的训练成果保留下来啊。
说实话没看懂你说的基底是什么。你所说的 [生成一组新空间的基底] 是什么意思?
打个比方有一组二维数据里面三个点(-2,-2 ),( 0,0 ),( 2,2 )。
这个很明显的 X=Y, 画出来就是一条对角线。 我们可以用这一条对角线来描述这组数据。这个就是 PCA 学到的东西。
比如说新来了一个点( 1,1 ),它离原点的距离是 1.414 ,所以我们把它映射到这条新的坐标轴后,可以用 1.414 代替这个数据。尽管训练数据里没有这点。
```python
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-2, -2], [0, 0], [2, 2]])
pca = PCA(n_components=1)
pca.fit(X)
data = [[1,1]]
pca.transform(data).round(3)
# output array([[1.414]])
```