Python >> Python Tutorial >  >> Python Tag >> Matplotlib

Erhöhen Sie LinAlgError (SVD konvergierte nicht) LinAlgError:SVD konvergierte nicht bei der Matplotlib-PCA-Bestimmung

Dies kann passieren, wenn die Daten inf- oder nan-Werte enthalten.

Verwenden Sie dies, um Nan-Werte zu entfernen:

ori_data.dropna(inplace=True)

Ich weiß, dass dieser Beitrag alt ist, aber falls jemand anderes auf das gleiche Problem stößt. @jseabold hatte Recht, als er sagte, dass das Problem nan oder inf ist, und die Operation hatte wahrscheinlich Recht, als er sagte, dass die Daten keine nan oder inf hatten. Wenn jedoch eine der Spalten in ori_data immer denselben Wert hat, erhalten die Daten Nans, da die Implementierung von PCA in mlab die Eingabedaten normalisiert, indem sie

ausführt
ori_data = (ori_data - mean(ori_data)) / std(ori_data).

Die Lösung ist zu tun:

result = PCA(ori_data, standardize=False)

Auf diese Weise wird nur der Mittelwert abgezogen, ohne durch die Standardabweichung zu dividieren.


Wenn keine inf- oder NaN-Werte vorhanden sind, handelt es sich möglicherweise um ein Speicherproblem. Bitte versuchen Sie es in einem Rechner mit höherem RAM.