mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 16:43:36 +00:00
* feature: modularized feature engineering for ml setup (new pipeline) * chore: updating imports properly * test: updating fixtures with ua and meta * chore: migrating code ignore groups * chore: syntax cleaning and code quality * chore: fixing pipeline data compatability * Update experiments/procesing/steps/session.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * chore: refactoring and dixing path joining * chore: refactoring function definition to avoid reinit --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
33 lines
965 B
Python
Executable File
33 lines
965 B
Python
Executable File
from abc import ABC, abstractmethod
|
|
from sklearn.base import BaseEstimator, TransformerMixin
|
|
from procesing.context import PipelineContext
|
|
from typing import Any
|
|
|
|
class BaseContextStep(BaseEstimator, TransformerMixin, ABC):
|
|
"""
|
|
Base for all pipeline steps.
|
|
Each step is stateless, context-driven, and performs ONE transformation.
|
|
"""
|
|
|
|
def __init__(self, context: PipelineContext):
|
|
self.context = context
|
|
|
|
def fit(self, X=None, y=None):
|
|
"""Most steps don't need training"""
|
|
return self
|
|
|
|
@abstractmethod
|
|
def transform(self, X) -> Any:
|
|
"""Transform input using context. Must be implemented by subclass."""
|
|
pass
|
|
|
|
def get_params(self, deep=True):
|
|
"""sklearn compatibility"""
|
|
return {'context': self.context}
|
|
|
|
def set_params(self, **params):
|
|
"""sklearn compatibility"""
|
|
if 'context' in params:
|
|
self.context = params['context']
|
|
return self
|