【发布时间】:2018-12-22 11:57:22
【问题描述】:
如何从以下数据中找到异常值。我正在模拟正弦模式。虽然我可以绘制数据并发现数据中的任何异常或噪音,但我如何在不绘制数据的情况下做到这一点。我正在寻找机器学习方法以外的简单方法。
import random
import numpy as np
import matplotlib.pyplot as plt
N = 10 # Set signal sample length
t1 = -np.pi # Simulation begins at t1
t2 = np.pi; # Simulation ends at t2
in_array = np.linspace(t1, t2, N)
print("in_array : ", in_array)
out_array = np.sin(in_array)
plt.plot(in_array, out_array, color = 'red', marker = "o") ; plt.title("numpy.sin()")
注入随机噪声
noise_input = random.uniform(-.5, .5); print("Noise : ",noise_input)
in_array[random.randint(0,len(in_array)-1)] = noise_input
print(in_array)
plt.plot(in_array, out_array, color = 'red', marker = "o") ; plt.title("numpy.sin()")
有噪声的数据
【问题讨论】:
-
您是否考虑过使用 FFT 来查找数据中的主频率?
-
@joel 我的第二个回答有帮助吗?
-
@MadPhysicist 我在嘈杂的数据上尝试了 FFT。这里是图片链接:imgur.com/a/i7a6bS8。由于存在的噪声较少,因此频域中只有一个峰值。
-
@joel。该峰值比正弦曲线本身更容易分离,但包含所有相同的信息。
标签: python signal-processing anomaly-detection