For symmetry with `TruncatedSVD`, you might want to have a string-valued parameter `algorithm` instead. It may also be worthwhile to check that class's way of dealing with differences between SVD implems, and to try `scipy.sparse.linalg.svds` (which works on dense arrays too).