Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 0 additions & 45 deletions py_stats_toolkit/stats/correlation/CorrelationModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,51 +21,6 @@
=====================================================================
'''

# Imports spécifiques au module
from typing import Any, Dict, List, Optional, Tuple, Union
import numpy as np
import pandas as pd

# Imports de la base
from capsules.BaseCapsule import BaseCapsule

class CorrelationModule(BaseCapsule):
"""
Classe CorrelationModule

Attributes:
data, parameters, results
"""

def __init__(self):
"""
Initialise CorrelationModule.
"""
super().__init__()
pass

def configure(self, **kwargs) -> None:
"""
Configure les paramètres de CorrelationModule.

Args:
**kwargs: Paramètres de configuration
"""
pass

def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]:
"""
Exécute le flux de travail d'analyse.

Args:
data (Union[pd.DataFrame, pd.Series]): Données à analyser
**kwargs: Arguments additionnels

Returns:
Dict[str, Any]: Résultats de l'analyse
"""
pass

import numpy as np
import pandas as pd
from scipy import stats
Expand Down
71 changes: 7 additions & 64 deletions py_stats_toolkit/stats/descriptives/MoyenneGlissanteModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,64 +21,19 @@
=====================================================================
'''

# Imports spécifiques au module
from typing import Any, Dict, List, Optional, Tuple, Union
import numpy as np
import pandas as pd

# Imports de la base
from capsules.BaseCapsule import BaseCapsule

class MoyenneGlissanteModule(BaseCapsule):
"""
Classe MoyenneGlissanteModule

Attributes:
data, parameters, results
"""

def __init__(self):
"""
Initialise MoyenneGlissanteModule.
"""
super().__init__()
pass

def configure(self, **kwargs) -> None:
"""
Configure les paramètres de MoyenneGlissanteModule.

Args:
**kwargs: Paramètres de configuration
"""
pass

def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]:
"""
Exécute le flux de travail d'analyse.

Args:
data (Union[pd.DataFrame, pd.Series]): Données à analyser
**kwargs: Arguments additionnels

Returns:
Dict[str, Any]: Résultats de l'analyse
"""
pass

import numpy as np
import pandas as pd
from ..core.AbstractClassBase import StatisticalModule
from ...utils.parallel import ParallelProcessor, BatchProcessor
from ...utils.parallel import ParallelProcessor

class MoyenneGlissanteModule(StatisticalModule):
"""Module pour le calcul de la moyenne glissante."""

def __init__(self, n_jobs: int = -1, batch_size: int = 1000):
super().__init__()
self.window_size = None
self.batch_size = batch_size
self.parallel_processor = ParallelProcessor(n_jobs=n_jobs)
self.batch_processor = BatchProcessor(batch_size=batch_size)

def _process_chunk(self, chunk):
"""Traite un chunk de données."""
Expand All @@ -99,26 +54,14 @@ def process(self, data, window_size=5, **kwargs):
self.validate_data(data)
self.window_size = window_size

# Convert to Series if not already
if isinstance(data, pd.Series):
data_array = data.values
else:
data_array = data

# Utilisation du traitement par lots pour les grandes séries
if len(data_array) > self.batch_processor.batch_size:
result = self.batch_processor.process_batches(self._process_chunk, data_array)
series_data = data
else:
# Traitement parallèle pour les séries plus petites
result = self.parallel_processor.parallel_apply(
self._process_chunk,
data_array.reshape(-1, 1),
axis=0
).flatten()
series_data = pd.Series(data)

if isinstance(data, pd.Series):
self.result = pd.Series(result, index=data.index)
else:
self.result = pd.Series(result)
# Calculate rolling mean
self.result = series_data.rolling(window=window_size).mean()

return self.result

Expand Down
47 changes: 1 addition & 46 deletions py_stats_toolkit/stats/factorielle/FactorielleModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,51 +21,6 @@
=====================================================================
'''

# Imports spécifiques au module
from typing import Any, Dict, List, Optional, Tuple, Union
import numpy as np
import pandas as pd

# Imports de la base
from capsules.BaseCapsule import BaseCapsule

class FactorielleModule(BaseCapsule):
"""
Classe FactorielleModule

Attributes:
data, parameters, results
"""

def __init__(self):
"""
Initialise FactorielleModule.
"""
super().__init__()
pass

def configure(self, **kwargs) -> None:
"""
Configure les paramètres de FactorielleModule.

Args:
**kwargs: Paramètres de configuration
"""
pass

def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]:
"""
Exécute le flux de travail d'analyse.

Args:
data (Union[pd.DataFrame, pd.Series]): Données à analyser
**kwargs: Arguments additionnels

Returns:
Dict[str, Any]: Résultats de l'analyse
"""
pass

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA, FactorAnalysis
Expand Down Expand Up @@ -202,7 +157,7 @@ def get_quality_metrics(self):
else:
return {
'Variance du bruit': self.result['Noise variance'].tolist(),
'Qualité de l'ajustement': 1 - np.mean(self.result['Noise variance'])
'Qualité de l\'ajustement': 1 - np.mean(self.result['Noise variance'])
}

def transform(self, new_data):
Expand Down
49 changes: 2 additions & 47 deletions py_stats_toolkit/stats/frequence/FrequenceModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,55 +21,10 @@
=====================================================================
'''

# Imports spécifiques au module
from typing import Any, Dict, List, Optional, Tuple, Union
import numpy as np
import pandas as pd

# Imports de la base
from capsules.BaseCapsule import BaseCapsule

class FrequenceModule(BaseCapsule):
"""
Classe FrequenceModule

Attributes:
data, parameters, results
"""

def __init__(self):
"""
Initialise FrequenceModule.
"""
super().__init__()
pass

def configure(self, **kwargs) -> None:
"""
Configure les paramètres de FrequenceModule.

Args:
**kwargs: Paramètres de configuration
"""
pass

def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]:
"""
Exécute le flux de travail d'analyse.

Args:
data (Union[pd.DataFrame, pd.Series]): Données à analyser
**kwargs: Arguments additionnels

Returns:
Dict[str, Any]: Résultats de l'analyse
"""
pass

import numpy as np
import pandas as pd
from core.AbstractClassBase import StatisticalModule
from utils.parallel import ParallelProcessor
from ..core.AbstractClassBase import StatisticalModule
from ...utils.parallel import ParallelProcessor

class FrequenceModule(StatisticalModule):
"""Module pour l'analyse de fréquence."""
Expand Down
55 changes: 5 additions & 50 deletions py_stats_toolkit/stats/probabilistes/ProbabilistesModule.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,55 +21,10 @@
=====================================================================
'''

# Imports spécifiques au module
from typing import Any, Dict, List, Optional, Tuple, Union
import numpy as np
import pandas as pd

# Imports de la base
from capsules.BaseCapsule import BaseCapsule

class ProbabilistesModule(BaseCapsule):
"""
Classe ProbabilistesModule

Attributes:
data, parameters, results
"""

def __init__(self):
"""
Initialise ProbabilistesModule.
"""
super().__init__()
pass

def configure(self, **kwargs) -> None:
"""
Configure les paramètres de ProbabilistesModule.

Args:
**kwargs: Paramètres de configuration
"""
pass

def process(self, data: Union[pd.DataFrame, pd.Series], **kwargs) -> Dict[str, Any]:
"""
Exécute le flux de travail d'analyse.

Args:
data (Union[pd.DataFrame, pd.Series]): Données à analyser
**kwargs: Arguments additionnels

Returns:
Dict[str, Any]: Résultats de l'analyse
"""
pass

import numpy as np
from scipy import stats
from ..core.AbstractClassBase import StatisticalModule
from ...utils.parallel import ParallelProcessor, BatchProcessor
from ...utils.parallel import ParallelProcessor

class ProbabilistesModule(StatisticalModule):
"""Module pour l'analyse probabiliste."""
Expand All @@ -78,8 +33,8 @@ def __init__(self, n_jobs: int = -1, batch_size: int = 1000):
super().__init__()
self.distribution = None
self.params = None
self.batch_size = batch_size
self.parallel_processor = ParallelProcessor(n_jobs=n_jobs)
self.batch_processor = BatchProcessor(batch_size=batch_size)

def _fit_distribution_chunk(self, chunk):
"""Ajuste une distribution sur un chunk de données."""
Expand Down Expand Up @@ -112,7 +67,7 @@ def process(self, data, distribution="normal", **kwargs):
self.distribution = distribution

# Pour les petits ensembles de données, ajustement direct
if len(data) < self.batch_processor.batch_size:
if len(data) < self.batch_size:
if distribution == "normal":
self.params = stats.norm.fit(data)
self.result = stats.norm(*self.params)
Expand Down Expand Up @@ -159,7 +114,7 @@ def get_probability_density(self, x):
raise ValueError("Exécutez d'abord process()")

# Pour les petits ensembles, calcul direct
if len(x) < self.batch_processor.batch_size:
if len(x) < self.batch_size:
return self.result.pdf(x)

# Pour les grands ensembles, traitement parallèle
Expand All @@ -181,7 +136,7 @@ def get_cumulative_distribution(self, x):
raise ValueError("Exécutez d'abord process()")

# Pour les petits ensembles, calcul direct
if len(x) < self.batch_processor.batch_size:
if len(x) < self.batch_size:
return self.result.cdf(x)

# Pour les grands ensembles, traitement parallèle
Expand Down
Loading