请稍等 ...
×

采纳答案成功!

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

PCA降维的维度问题

老师好,想确认一下PCA(n_components=200)中这个200是按每张的feature数量降维?还是按照图片数量降维?
我把n_components一旦改为超过230后,会有截图中的错误,即:

ValueError: n_components=250 must be between 0 and min(n_samples, n_features)=230 with svd_solver='full'

看起来现在的写法像是按照图片数量降维而不是按照每张图片的feature数量降维?
图片描述

正在回答

1回答

同学你好,这是个好问题。PCA降维实现的依旧是对features的减少,而不是样本数,这个你要记住。因此降维之后的样本数量是不变的,feature数量会变少。

为什么pca降维后feature数量多余样本数量会报错?这是算法本身决定的,要求降维后的feature数量少于样本数:

思考pca降维的原理,如果要降到n维,那就需要构建一个n维德投影空间,而这个投影空间是要通过n+1个样本数量决定的,如果样本数量太少,那就无法得到一个有效的投影空间。举个最简单的例子:

把数据点投影到一条直线上,理解为投影到一维空间,那就需要有两个或两个以上的点,这样才能确定一条直线,使样本到直线德距离之和最小,如果只有一个点,那是有无数条直线的。因此需要样本数量大于一。

https://img1.sycdn.imooc.com//szimg/5e8a8df4099726c903420301.jpg

3 回复 有任何疑惑可以回复我~
  • 提问者 carrickeane #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-04-06 21:13:41
  • flare_zhao 回复 提问者 carrickeane #2
    Cheers
    回复 有任何疑惑可以回复我~ 2020-04-06 22:16:33
  • lz1800 #3
    老师 这里我想追问一下,我看了下文档里是这么写的 n_components == min(n_samples, n_features) - 1 我还是不太明白这个原理
    回复 有任何疑惑可以回复我~ 2020-04-13 06:40:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信