Ich verwende Python Scikit-Learn Paket PCA zu implementieren .Ich ist immer MatheMathe Domain-Fehler beim PCA mit
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ß schon, dass Mathematik Domain Fehler verursacht, wenn wir Logarithmus einer negativen Zahl nehmen, aber ich verstehe hier nicht, wie kann es eine negative Zahl innerhalb des Logarithmus geben? weil dieser Code für andere Datensätze gut funktioniert. vielleicht hängt das mit dem zusammen, was auf der Website von sci-kitlearn geschrieben wird - "Diese Implementierung verwendet die scipy.linalg-Implementierung der Singulärwertzerlegung. Sie funktioniert nur für dichte Arrays und ist nicht skalierbar für große dimensionale Daten." große Zahl von 0 Werten)
können Sie eine minimale erstellen Beispiel reproduziert diesen Fehler mit Zufallsdaten? – eickenberg
Ich habe das gleiche Problem - nimmt Protokoll (0) – user48956