我正在使用PCA来显示群集,并注意到Sklearn添加了" random_state" PCA方法的参数(http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html),我的问题是random_state参数是做什么的?
我的理解是PCA应该返回相同的主要组件,尽管是随机状态,那么,内置它的目的是什么?
答案 0 :(得分:0)
正如文档所述,此参数仅与某些求解器相关:
random_state:int,RandomState instance or None,optional(默认为None)
如果是int,则random_state是随机数生成器使用的种子;如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是np.random使用的RandomState实例。 在svd_solver =='arpack'或'randomized'时使用。
随机解算器在Finding Structure With Randomness: Stochastic Algorithms For Constructing Approximate Matrix Decompositions中有描述,很清楚它是一个保证误差范围的近似值。
现在与arpack有什么关系?这是一个iterative方法,wiki的伪代码已经显示了一些随机初始化,arpack-page也提到了隐式重启的Arnoldi方法,其中< em> restart 是随机性的另一个指示。
所以要准备好看,并非所有方法都输出相同的结果。 arpack ,特别是随机正在瞄准更大的数据集,我们可以做到近似。
另请注意,当没有 random_state 参数时,这两个解算器在版本0.17中都不可用。