Я пытаюсь обнаружить выбросы в кадре данных, используя алгоритм Isolation Forest из sklearn.
Вот код, который я использую для настройки алгоритма:
iForest = IsolationForest(n_estimators=100, max_samples=256, contamination='auto', random_state=1, behaviour='new')
iForest.fit(dataset)
scores = iForest.decision_function(dataset)
Сейчас, поскольку я не знаю, какой может быть хорошая ценность для загрязнения, я хотел бы проверить свои оценки и решить, где провести черту, основываясь на распределении результатов. Вот код для графика и самого графика:
plt.figure(figsize=(12, 8))
plt.hist(scores, bins=50);
Правильно ли предположить, что отрицательные оценки указывают на выбросы в моем фрейме данных? Я не могу найти хорошего объяснения диапазона оценок IF и как эти оценки работают (почему я получаю отрицательные оценки?).
Кроме того, есть ли способ прикрепить эти оценки к исходному набору данных? и вручную проверять строки с отрицательными значениями, чтобы увидеть, имеют ли они смысл?
Спасибо!