我想对我的 Swat 数据集进行降噪。在此数据集中,actuator_columns 具有 0-1 值。传感器列具有数值。我将 OneHotEncoding 用于执行器,将 Standardscaler 用于传感器。 72列 然后我尝试实现快速傅里叶变换来去噪。 我的代码是:
signals=df.to_numpy()
def filter_signal(signal, threshold=1e8):
fourier = rfft(signal)
frequencies = rfftfreq(signal.size, d=20e-3/signal.size)
fourier[frequencies > threshold] = 0
return irfft(fourier)
filtered = filter_signal(signals[0, 0 :], threshold=1e3)
plt.figure(figsize=(15, 10))
plt.xlabel('Frequencies')
plt.ylabel('Amplitude')
plt.plot(signals[0, 0 :], label='Raw')
plt.plot(filtered, label='Filtered')
plt.legend()
plt.title("FFT Denoising with threshold = 1e3", size=15)
plt.show()
在这段代码之后,我对 72 大小的过滤数组进行了去噪。
在去噪部分之后,我想实施 IsolatonForest 进行异常检测。 所以我需要在 IsolatıonForest 模型中使用的数据框。我试过了
pd.DataFrame(filtered)
但有 1 列 72 行。所以我不能将它用于我的模型。 去噪部分后如何获得数据帧?我该如何解决这个问题?
致以诚挚的问候。