web-dev-qa-db-fra.com

Ajouter du bruit gaussien à un ensemble de données de virgules flottantes et l'enregistrer (python)

Je travaille sur un problème de classification où j'ai besoin d'ajouter différents niveaux de bruit gaussien à mon ensemble de données et de faire des expériences de classification jusqu'à ce que mes algorithmes ML ne puissent pas classer l'ensemble de données. malheureusement, je ne sais pas comment faire ça. des conseils ou des conseils de codage sur la façon d'ajouter le bruit gaussien?

7
sara

Vous pouvez suivre ces étapes:

  1. Chargez les données dans un pandas dataframe clean_signal = pd.read_csv("data_file_name")
  2. Utilisez numpy pour générer du bruit gaussien avec la même dimension que l'ensemble de données.
  3. Ajoutez du bruit gaussien au signal clair avec signal = clean_signal + noise

Voici un exemple reproductible:

import pandas as pd
# create a sample dataset with dimension (2,2)
# in your case you need to replace this with 
# clean_signal = pd.read_csv("your_data.csv")   
clean_signal = pd.DataFrame([[1,2],[3,4]], columns=list('AB'), dtype=float) 
print(clean_signal)
"""
print output: 
    A    B
0  1.0  2.0
1  3.0  4.0
"""
import numpy as np 
mu, sigma = 0, 0.1 
# creating a noise with the same dimension as the dataset (2,2) 
noise = np.random.normal(mu, sigma, [2,2]) 
print(noise)

"""
print output: 
array([[-0.11114313,  0.25927152],
       [ 0.06701506, -0.09364186]])
"""
signal = clean_signal + noise
print(signal)
"""
print output: 
          A         B
0  0.888857  2.259272
1  3.067015  3.906358
""" 

Code général sans les commentaires et les déclarations imprimées:

import pandas as pd
# clean_signal = pd.read_csv("your_data.csv")
clean_signal = pd.DataFrame([[1,2],[3,4]], columns=list('AB'), dtype=float) 
import numpy as np 
mu, sigma = 0, 0.1 
noise = np.random.normal(mu, sigma, [2,2])
signal = clean_signal + noise

Pour sauvegarder le fichier en CSV

signal.to_csv("output_filename.csv", index=False)
14