我使用python的scikit学习包来实现PCA。我正在逐渐数学数学领域的错误,而使用PCA
domain error :
C:\Users\Akshenndra\Anaconda2\lib\site-packages\sklearn\decomposition\pca.pyc in _assess_dimension_(spectrum, rank, n_samples, n_features)
78 for j in range(i + 1, len(spectrum)):
79 pa += log((spectrum[i] - spectrum[j]) *
---> 80 (1./spectrum_[j] - 1./spectrum_[i])) + log(n_samples)
81
82 ll = pu + pl + pv + pp - pa/2. - rank * log(n_samples)/2.
ValueError: math domain error
我已经知道,当我们采取负数的对数是数学领域的错误造成的,但我在这里不明白在对数内怎么会有一个负数?因为这个代码适用于其他数据集。可能这与sci-kitlearn的网站上写的内容有关 - “这个实现使用奇异值分解的scipy.linalg实现,它只适用于密集数组,并且不能扩展到大尺寸数据。”(有大量的0值)
你可以创建一个最小使用随机数据重现此错误的例子? – eickenberg
我有同样的问题 - 正在采取日志(0) – user48956