请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

PCA中样本均值归零与前N个主成分问题

一共请教老师2个问题
1.在老师自己写的PCA代码中已经包含的对均值归零的处理,那sklearn中的PCA是不是也自动包含了相应的操作?
另外我看了其他人关于归一化的提问,老师也明确指出在PCA之前是需要进行归一化的,但是视频识别手写数字的时候没有归一化处理,是不是因为手写数字的特征原本就是基于黑白像素规整的数据,所以不必归一化处理?

2.主成分解释方差中的这步操作pca = PCA(n_components=X_train.shape[1])
结果显示的把原来64维的数据降维成64个主成分是吗?这里的64列并非原本的数据了,对吗?

正在回答

1回答

liuyubobobo 2018-11-11 17:17:05

1.

是的。sklearn也包含。


PCA中对数据的归一化处理,是在PCA内部降维过程中“暂用”的,PCA没有真正的改变数据。所以,在具体调用我们封装的PCA之前,或者sklearn封装的PCA之前,是不需要对数据进行归一化处理的!这个过程在PCA的内部,是对外隐藏的!


对于对数据进行归一化,其原因在课程的4-7介绍了,就是为了统一数据的尺度!对于手写图像的数据,所有的数据已经在统一尺度下了(0-255的灰度值),所以,不进行归一化是ok的。


2

是的,我们将64维的数据按照PCA的法则转换成了64维数据,但是这个64维已经不是原来的64维了。现在的64维是按照PCA的标准,从“重要程度”由高到低,排列的新的64个维度:)

0 回复 有任何疑惑可以回复我~
  • 提问者 管一三四 #1
    老师,关于PCA的whiten参数 :判断是否进行白化。这个参数一般什么情况需要用到,这个参数是不是对于降维后的数据再进行一次归一化处理
    回复 有任何疑惑可以回复我~ 2018-11-11 21:15:27
  • liuyubobobo 回复 提问者 管一三四 #2
    这个参数不是判断是否白化,是选择是否要进行白化PCA(PCA Whitening)。简单的说,白化让所有的特征方差一致。一些算法在进行数据进行白化处理后才能有更好的效果,尤其在深度学习领域。白化过程虽然实现并不复杂,但是背后的原理由于涉及过多数学概念,不是这个课程介绍的范围。实际上,这个课程中所介绍的PCA底层实现原理,也不是真正的一般数学标准库中的PCA的原理。PCA背后也涉及了大量的数学原理和概念。由于这个课程是入门课程,在设计上尽量摒弃了复杂的数学原理和概念,所以,这个课程是使用计算机领域常用的方法,搜索,解决的PCA问题(梯度上升法)。如果对此感兴趣,可以在互联网上找更多相关内容进行自学。在这方面,比较普遍的一个材料,可以参考这里:http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/ 加油!:)
    回复 有任何疑惑可以回复我~ 2018-11-12 06:29:15
  • 提问者 管一三四 回复 liuyubobobo #3
    谢谢!
    回复 有任何疑惑可以回复我~ 2018-11-12 12:30:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信