Hi Olivier, Thank you very much for your reply. I was convinced it couldn't be a fundamental mathematical issue because the singular values were coming out exactly right, so it had to be a problem with the way complex values were being handled.
I decided to look at the source code and it turns out the problem is when the following transformation is applied: U = np.dot(Q, Uhat) Replacing this by U = np.dot(Q.conj(), Uhat) solves the issue! Should I report this on github? On 10 August 2017 at 16:13, Olivier Grisel <olivier.gri...@ensta.org> wrote: > I have no idea whether the randomized SVD method is supposed to work for > complex data or not (from a mathematical point of view). I think that all > scikit-learn estimators assume real data (or integer data for class labels) > and our input validation utilities will cast numeric values to float64 by > default. This might be the cause of your problem. Have a look at the source > code to confirm. The reference to the paper can also be found in the > docstring of those functions. > > -- > Olivier > > _______________________________________________ > scikit-learn mailing list > scikit-learn@python.org > https://mail.python.org/mailman/listinfo/scikit-learn > _______________________________________________ scikit-learn mailing list scikit-learn@python.org https://mail.python.org/mailman/listinfo/scikit-learn