in src/sagemaker_sklearn_extension/decomposition/robust_pca.py [0:0]
def fit(self, X, y=None):
"""Fit the model with X.
Parameters
----------
X : array-like, shape (n_samples, n_features)
Training data.
Returns
-------
self : RobustPCA
"""
X = check_array(X, accept_sparse=True, dtype=None)
# if input dimension is less than or equal to target dimension, no reduction will be performed
if X.shape[1] <= self.n_components:
self.robust_pca_ = None
return self
# fit for sparse or dense input
if issparse(X):
algorithm = self.svd_solver if self.svd_solver == "arpack" else "randomized"
n_iter = self.iterated_power if self.iterated_power != "auto" else 5
self.robust_pca_ = TruncatedSVD(
n_components=self.n_components,
algorithm=algorithm,
n_iter=n_iter,
random_state=self.random_state,
tol=self.tol,
)
else:
self.robust_pca_ = PCA(
n_components=self.n_components,
svd_solver=self.svd_solver,
tol=self.tol,
iterated_power=self.iterated_power,
random_state=self.random_state,
)
self.robust_pca_.fit(X)
return self