math Domänenfehler bei Verwendung von PCA
Ich verwende Pythons Scikit-Lernpaket, um PCA zu implementieren. Ich bekomme Mathe
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
Ich weiß bereits, dass ein mathematischer Domänenfehler verursacht wird, wenn wir den Logarithmus einer negativen Zahl verwenden, aber ich verstehe hier nicht, wie es möglich ist, dass eine negative Zahl im Logarithmus enthalten ist. weil dieser Code für andere Datasets gut funktioniert. Vielleicht hängt dies damit zusammen, was auf der Website von sci-kitlearn geschrieben steht: "Diese Implementierung verwendet die scipy.linalg-Implementierung der Singularwertzerlegung. Sie funktioniert nur für dichte Arrays und ist nicht für große dimensionale Daten skalierbar." Anzahl von 0 Werten)