3
3
# Authors: The scikit-learn developers
4
4
# SPDX-License-Identifier: BSD-3-Clause
5
5
6
- from math import log , sqrt
6
+ from math import lgamma , log , sqrt
7
7
from numbers import Integral , Real
8
8
9
9
import numpy as np
10
10
from scipy import linalg
11
11
from scipy .sparse import issparse
12
12
from scipy .sparse .linalg import svds
13
- from scipy .special import gammaln
14
13
15
14
from ..base import _fit_context
16
15
from ..utils import check_random_state
17
16
from ..utils ._arpack import _init_arpack_v0
18
- from ..utils ._array_api import _convert_to_numpy , device , get_namespace
17
+ from ..utils ._array_api import _convert_to_numpy , get_namespace
19
18
from ..utils ._param_validation import Interval , RealNotInt , StrOptions
20
19
from ..utils .extmath import fast_logdet , randomized_svd , stable_cumsum , svd_flip
21
20
from ..utils .sparsefuncs import _implicit_column_offset , mean_variance_axis
@@ -71,8 +70,7 @@ def _assess_dimension(spectrum, rank, n_samples):
71
70
pu = - rank * log (2.0 )
72
71
for i in range (1 , rank + 1 ):
73
72
pu += (
74
- gammaln ((n_features - i + 1 ) / 2.0 )
75
- - log (xp .pi ) * (n_features - i + 1 ) / 2.0
73
+ lgamma ((n_features - i + 1 ) / 2.0 ) - log (xp .pi ) * (n_features - i + 1 ) / 2.0
76
74
)
77
75
78
76
pl = xp .sum (xp .log (spectrum [:rank ]))
@@ -93,7 +91,6 @@ def _assess_dimension(spectrum, rank, n_samples):
93
91
(spectrum [i ] - spectrum [j ]) * (1.0 / spectrum_ [j ] - 1.0 / spectrum_ [i ])
94
92
) + log (n_samples )
95
93
96
- pu = xp .asarray (pu , device = device (spectrum ), dtype = spectrum .dtype )
97
94
ll = pu + pl + pv + pp - pa / 2.0 - rank * log (n_samples ) / 2.0
98
95
99
96
return ll
0 commit comments