Repository navigation
Expand file tree
/
Copy pathpreprocessing.py
More file actions
63 lines (47 loc) · 1.74 KB
/
Copy pathpreprocessing.py
File metadata and controls
63 lines (47 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import numpy as np
import pandas as pd
import random
from config import IDX_RANGES, N_FEATURES, NOISE_PERCENT
def get_msd_indices():
idx_msd = []
for r in IDX_RANGES:
idx_msd.extend(list(r))
return idx_msd
def select_msd_features(data, idx_msd, n_cols):
out = np.zeros([N_FEATURES, n_cols])
for i, j in enumerate(idx_msd):
out[i, :] = data[j, :]
return out
def select_msd_features_rows(data, idx_msd):
out = np.zeros([data.shape[0], N_FEATURES])
for i, j in enumerate(idx_msd):
out[:, i] = data[:, j]
return out
def normalize_rows(data, n_rows, n_cols):
norm = np.zeros([n_rows, n_cols])
for i in range(n_rows):
mn, mx = np.min(data[i, :]), np.max(data[i, :])
norm[i, :] = (data[i, :] - mn) / (mx - mn)
return norm
def bootstrap_and_generate(x_df, n_features, n_samples=10000):
means, stds = [], []
for i in range(n_features):
bst = [x_df.sample(35, replace=True)[i + 1] for _ in range(100)]
bst_np = np.array(bst).reshape([35 * 100])
means.append(np.mean(bst_np))
stds.append(np.std(bst_np))
synthetic = []
for i in range(n_features):
synthetic.append([random.gauss(means[i], stds[i]) for _ in range(n_samples)])
return np.array(synthetic)
def add_noise(x, noise_percent=NOISE_PERCENT):
r = np.random.normal(0, 1, size=x.shape)
return x * (1 + (noise_percent / 100) * r)
def generate_noisy_fe(x_fe_sample, n_samples=10000, noise_percent=NOISE_PERCENT):
noisy = np.zeros([N_FEATURES, n_samples])
for i in range(n_samples):
noisy[:, i] = add_noise(x_fe_sample, noise_percent)
return noisy
if __name__ == "__main__":
idx = get_msd_indices()
print("MSD indices count:", len(idx))