Skip to content

Commit

Permalink
fix pca
Browse files Browse the repository at this point in the history
  • Loading branch information
valer1435 committed Mar 11, 2024
1 parent 9bdb42e commit e76a26a
Showing 1 changed file with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from fedot.core.operations.evaluation.operation_implementations. \
implementation_interfaces import DataOperationImplementation, EncodedInvariantImplementation
from fedot.core.operations.operation_parameters import OperationParameters
from fedot.core.repository.dataset_types import DataTypesEnum
from fedot.preprocessing.data_types import TYPE_TO_ID


Expand All @@ -23,6 +24,7 @@ class ComponentAnalysisImplementation(DataOperationImplementation):
params: OpearationParameters with the arguments
"""

MIN_THRESHOLD_TS = 7
def __init__(self, params: Optional[OperationParameters]):
super().__init__(params)
self.pca = None
Expand All @@ -42,7 +44,7 @@ def fit(self, input_data: InputData):
self.number_of_samples, self.number_of_features = np.array(input_data.features).shape

if self.number_of_features > 1:
self.check_and_correct_params()
self.check_and_correct_params(is_ts_data=input_data.data_type is DataTypesEnum.ts)
self.pca.fit(input_data.features)

return self.pca
Expand All @@ -68,7 +70,7 @@ def transform(self, input_data: InputData) -> OutputData:
self.update_column_types(output_data)
return output_data

def check_and_correct_params(self):
def check_and_correct_params(self, is_ts_data: bool = False):
"""Method check if number of features in data enough for ``n_components``
parameter in PCA or not. And if not enough - fixes it
"""
Expand All @@ -80,6 +82,8 @@ def check_and_correct_params(self):
# Check that n_samples correctly map with n_features
if self.number_of_samples < self.number_of_features:
self.params.update(n_components=0.5)
if is_ts_data and (n_components * self.number_of_features) < self.MIN_THRESHOLD_TS:
self.params.update(n_components=self.MIN_THRESHOLD_TS / self.number_of_features)

self.pca.set_params(**self.params.to_dict())

Expand Down

0 comments on commit e76a26a

Please sign in to comment.