@@ -440,7 +440,8 @@ def randomized_pca(A, n_components, n_oversamples=10, n_iter="auto",
440
440
"""
441
441
if n_iter == "auto" :
442
442
# Checks if the number of iterations is explicitly specified
443
-
10000
# Adjust n_iter. 7 was found a good compromise for PCA. See sklearn #5299
443
+ # Adjust n_iter. 7 was found a good compromise for PCA.
444
+ # See sklearn #5299
444
445
n_iter = 7 if n_components < .1 * min (A .shape ) else 4
445
446
446
447
# Deal with "auto" mode
@@ -455,7 +456,9 @@ def randomized_pca(A, n_components, n_oversamples=10, n_iter="auto",
455
456
c = np .atleast_2d (A .mean (axis = 0 ))
456
457
457
458
if n_samples >= n_features :
458
- Q = random_state .normal (size = (n_features , n_components + n_oversamples ))
459
+ Q = random_state .normal (
460
+ size = (n_features , n_components + n_oversamples )
461
+ )
459
462
if A .dtype .kind == "f" :
460
463
# Ensure f32 is preserved as f32
461
464
Q = Q .astype (A .dtype , copy = False )
@@ -464,30 +467,36 @@ def randomized_pca(A, n_components, n_oversamples=10, n_iter="auto",
464
467
465
468
# Normalized power iterations
466
469
for _ in range (n_iter ):
467
- Q = safe_sparse_dot (A .T , Q ) - safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
470
+ Q = safe_sparse_dot (A .T , Q ) - \
471
+ safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
468
472
Q = _normalize_power_iteration (Q , power_iteration_normalizer )
469
473
Q = safe_sparse_dot (A , Q ) - safe_sparse_dot (c , Q )
470
474
Q = _normalize_power_iteration (Q , power_iteration_normalizer )
471
475
472
476
Q , _ = linalg .qr (Q , mode = "economic" )
473
477
474
- QA = safe_sparse_dot (A .T , Q ) - safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
478
+ QA = safe_sparse_dot (A .T , Q ) - \
479
+ safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
475
480
R , s , V = linalg .svd (QA .T , full_matrices = False )
476
481
U = Q .dot (R )
477
482
478
483
else : # n_features > n_samples
479
- Q = random_state .normal (size = (n_samples , n_components + n_oversamples ))
484
+ Q = random_state .normal (
485
+ size = (n_samples , n_components + n_oversamples )
486
+ )
480
487
if A .dtype .kind == "f" :
481
488
# Ensure f32 is preserved as f32
482
489
Q = Q .astype (A .dtype , copy = False )
483
490
484
- Q = safe_sparse_dot (A .T , Q ) - safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
491
+ Q = safe_sparse_dot (A .T , Q ) - \
492
+ safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
485
493
486
494
# Normalized power iterations
487
495
for _ in range (n_iter ):
488
496
Q = safe_sparse_dot (A , Q ) - safe_sparse_dot (c , Q )
489
497
Q = _normalize_power_iteration (Q , power_iteration_normalizer )
490
- Q = safe_sparse_dot (A .T , Q ) - safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
498
+ Q = safe_sparse_dot (A .T , Q ) - \
499
+ safe_sparse_dot (c .T , Q .sum (axis = 0 )[None , :])
491
500
Q = _normalize_power_iteration (Q , power_iteration_normalizer )
492
501
493
502
Q , _ = linalg .qr (Q , mode = "economic" )
0 commit comments