-
Notifications
You must be signed in to change notification settings - Fork 0
/
random_set.py
53 lines (34 loc) · 1.36 KB
/
random_set.py
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
# coding=utf-8
# Toma un set de entrenamiento y genera uno con incertidumbre aleatoria en las
# variables
# -----------------------------------------------------------------------------
import pandas as pd
import random
import numpy as np
def add_noise(data, level):
"""Toma un dataframe normal (cada columna es una feature y la ultima es class),
y le agrega incertidumbre. Ademas agrega la columan weight que ocupan mis modelos
data: dataframe
level: porcentaje del rango. Se usa como el valor maximo de incertidumbre que se le da a un punto
"""
columns = data.columns[0:-1]
# Obtengo los rangos para cada variable. Despues la incertidumbre se pone como fraccion de estos.
rangos = {col: (data[col].max() - data[col].min()) for col in columns}
df = {}
for col in columns: # no considero la clase
feature = data[col]
std = []
for i in range(feature.size):
noise = np.random.uniform(0, level) / 100.0
std.append(rangos[col] * noise)
df[col] = std
return pd.DataFrame(df, index=data.index)
if __name__ == '__main__':
dataset_path = '/Users/npcastro/Desktop/Datasets/Robot/sensor_readings_24.csv'
result_dir = '/Users/npcastro/Desktop/Datasets/Noise/'
data = pd.read_csv(dataset_path)
noise_levels = range(5, 70, 5)
for u in noise_levels:
np.random.seed(1)
u_data = add_noise(data, u)
u_data.to_csv(result_dir + 'Robot_' + str(u) +'.csv')