Я пытаюсь использовать LOF в качестве детектора выбросов в режиме онлайн / в реальном времени. Я использую скользящее окно, в которое я ввожу потоки данных и применяю LOF. По какой-то причине это не работает - дает слишком много прогнозов выбросов даже после снижения порога загрязнения. Я считаю, что это как-то связано с тем, как я применяю скользящее окно в этой модели. LOF работает должным образом, когда я не использую скользящее окно.
Код для раздвижного окна
def sliding_window(data, size):
return [ data[x:x+size] for x in range( len(data) - size + 1 ) ]
Код для модели LOF
# sliding window prediction
model = LocalOutlierFactor(n_neighbors=20, novelty=True, contamination=0.01)
lst=[]
for hours in sliding_window(data, 24*3):
d = model.fit(hours)
x = pd.Series(model.predict(hours))
lst.append(x)
dx1 = pd.concat(lst, axis=0)