[scikit-learn] Truncated svd not working for complex matrices
andre.nascimento.melo at gmail.com
Thu Aug 10 10:56:43 EDT 2017
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.grisel at 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.
> scikit-learn mailing list
> scikit-learn at python.org
More information about the scikit-learn