【发布时间】:2016-08-23 14:17:35
【问题描述】:
我正在使用 python 的 scikit-learn 包来实现 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 值的数量)
【问题讨论】:
-
你能创建一个最小的例子来重现这个错误,使用随机数据吗?
-
我也有同样的问题——正在记录 log(0)
标签: python scikit-learn pca