【发布时间】:2017-11-29 08:28:21
【问题描述】:
我的问题与math domain error while using PCA高度相关
我收到以下错误:
File "$path$\Python\Python36\lib\site-packages\sklearn\decomposition\pca.py", line 88, in _assess_dimension_(1. / spectrum_[j] - 1. / spectrum_[i])) + log(n_samples)
ValueError: math domain error
pa += log((spectrum[i] - spectrum[j]) * (1. / spectrum_[j] - 1. / spectrum_[i])) + log(n_samples)
仔细看后发现问题是由这部分方程引起的:
(spectrum[i] - spectrum[j])
如果这些值相等,则结果为 0。这会导致乘以 0,从而产生 log(0) 导致此异常的原因。
现在我的问题。发生此错误的事实是否表明我的数据有问题,或者实施是否应该处理这种情况? 如果实现应该处理这个问题,你会推荐什么方式来正确处理这个问题? 在链接的问题中已经有 an answer 对此,但它看起来不是很有信心是正确的并且没有任何反馈。
在 scikit-learn 的 github 存储库上创建了一个 issue,其中包含重现错误的步骤。
【问题讨论】:
-
您应该在 scikit-learn github 问题页面上发布此内容。它在 PCA 文档中提到,当
n_components == ‘mle’时,Minka’s MLE 用于猜测维度。所以也许这有实施问题。 -
我知道Minka的MLE就是用这个配置的。我想知道这个算法是否存在实现问题,或者我的数据是否不适合这个算法。我也在 github 上打开了一个 issue 并参考了它。
标签: python scikit-learn pca mle