Я немного борюсь с этим.
У меня есть фрейм данных, и я хочу применить гауссов шум только к ненулевым элементам фрейма данных. Глупый способ сделать это:
mu, sigma = 0, 0.1
for i in range(df.shape[0]):
for j in range(df.shape[1]):
if df.iat[i,j] != 0:
df.iat[i,j] += np.random.normal(mu,sigma)
Шум должен быть разным для каждого элемента, мы не добавляем одно и то же значение каждый раз.
И я был бы рад, если бы это сработало. На самом деле по какой-то причине это не так. Вместо этого я получил это:
до шума
после шума
Как вы можете видеть на изображении, для столбцов A и C это работает хорошо, но не для других. Что странно, так это то, что все еще есть изменение (+/- 1, так далеко от того, что можно было бы, кроме гауссовского шума ...)
Я пытался выяснить, была ли это какая-то десятичная проблема с df.round (), но ничего не вышло.
Так что я ищу другой способ применить мой шум, а не решать эту странную проблему. Заранее спасибо.