1+ '''Generates synthetic data where the independent variables are a random walk.'''
2+
3+ import autoencodersb .constants as cn
4+ from autoencodersb .data_generator import DataGenerator # type: ignore
5+
6+ import numpy as np # type: ignore
7+ import pandas as pd # type: ignore
8+ from typing import cast , Optional , Tuple
9+
10+
11+ class DataGeneratorPath (DataGenerator ):
12+
13+ def __init__ (self ,
14+ num_sample : int = 1000 ,
15+ num_independent_feature : int = 2 ,
16+ num_feature : int = 10 ,
17+ num_data_value : int = 10 ,
18+ data_density : float = 1.0 , # Number of values per integer interval
19+ noise_std : float = 0.0
20+ ):
21+ super ().__init__ (
22+ num_sample = num_sample ,
23+ num_independent_feature = num_independent_feature ,
24+ num_feature = num_feature ,
25+ num_data_value = num_data_value ,
26+ data_density = data_density ,
27+ noise_std = noise_std
28+ )
29+
30+ def generateIndependentFeature (self ) -> np .ndarray :
31+ """
32+ Generates a random walk
33+
34+ Returns:
35+ np.ndarray (N X I): An array of size independent features.
36+ N is self.num_sample
37+ I is self.num_independent_feature
38+ """
39+ path = np .zeros ((self .num_sample , self .num_independent_feature ), dtype = np .float32 )
40+ for i in range (1 , self .num_sample ):
41+ path [i ] = path [i - 1 ] + np .random .normal (0 , self .noise_std , size = (self .num_independent_feature ,))
42+ return path
43+
44+ N is self .num_sample
45+ I self .num_independent_feature
46+ """
47+ return np.random.randint(1, self.num_data_value + 1,
48+ (self.num_sample, self.num_independent_feature)).astype(np.float32) / self.data_density
49+
50+ def generateIndependentFeatures(self) -> np.ndarray:
51+ """
52+ Generates an array of independent features .
53+
54+ Returns :
55+ np .ndarray (N X I ): An array of size independent features .
56+ N is self .num_sample
57+ I self .num_independent_feature
58+ """
59+ return np .random .randint (1 , self .num_data_value + 1 ,
60+ (self .num_sample , self .num_independent_feature )).astype (np .float32 ) / self .data_density
0 commit comments