背景:
我正在使用 EigenFaces 进行研究,并且厌倦了 Matlab。正在考虑使用Python。我需要提取多个图像的任何主成分,并使用这些选定的主成分通过图像训练数据集进行特征缩减和人脸识别。
问题:
在
sklearn
中,PCA 函数 允许仅指定 n_components
,这将采用第一个 n
个主成分。但我需要能够单独选择任何主成分,因为我需要尝试使用多个主成分的随机组合来进行特征缩减和特征面计算。这是研究要求的一部分。
我注意到一些定制的实现here和here,但我更喜欢一个更标准的库,以避免结果中出现错误。还注意到另一个 PCA 库,它似乎没有提供低级函数来获取我需要的更多细节。
有没有可靠的方法可以使用Python获取各个主成分?
要获取所有组件,您可以运行
PCA(n_components=1.0)
,或者等效地仅运行 PCA()
,因为默认行为将返回所有组件。
如果您只需要尽可能多的分量来解释(例如 85% 的方差),那就是
PCA(n_components=0.85)
。如果您确切知道需要多少个组件,则可以指定一个 integer 来代替:PCA(n_components=10)
。
因此,如果
n_components
是一个分数(float
在 python 中类型),那么它会给你解释那么多方差的分量。如果您指定一个整数,它将为您提供那么多的组件。 n_components=1
(整数)只会给出第一个分量,而 n_components=1.0 被解释为分数,并将返回解释该方差比例的分量。