Поиск выбросов с IsolationForest в фрейме данных - PullRequest
0 голосов
/ 01 октября 2019

Я хочу найти выбросы в моем фрейме данных. Я написал код, который скажет мне, являются ли мои входные значения выбросами или нет, но я не могу найти способ проверить, содержат ли мои данные выбросы или нет. Кроме того, я думаю, что мой код не работает хорошо, потому что он говорит, что эти значения [1,4,64] не являются выбросами, и я думаю, что они.

   first  second  third  result
0      1       2      7    3.00
1     28      85     74    0.04
2      5       2      3    3.00
3      6       4      8    4.00
4      3       6      2    3.00
5      5       8      4    5.00
6      4       3      7    6.00
7      2       5      1    6.00
8      7       7    533    0.80
9      5       3      6    9.00

Например, вы можете ясно видеть, что значения в 1-мряд и восьмой ряд являются выбросами. Вот код, который у меня есть:

import pandas as pd
from sklearn.ensemble import IsolationForest  

df = pd.DataFrame({'first': [1,28,5,6,3,5,4,2,7,5],
                   'second': [2,85,2,4,6,8,3,5,7,3],
                   'third': [7,74,3,8,2,4,7,1,533,6],
                   'result': [3,0.04,3,4,3,5,6,6,0.8,9]})

print(df)

x = df.iloc[:,:-1]
print(x)

isolation_forest = IsolationForest(n_estimators=100, behaviour="new",
                                   contamination='auto')
model = isolation_forest.fit(x)

list_of_val = [[1,35,3], [3,4,5], [1,4,64]]

for val in list_of_val:

    outlier = isolation_forest.predict([val])
    print(outlier)

    if outlier[0] == -1:
        print('Values', val, 'are outliers')

    else:
        print('Values', val, 'are not outliers')

Я был бы очень благодарен, если бы вы сказали мне, почему мой код не определяет значения [1,4,64] как выбросы, и если вы скажете мне, как я могу получить outlier column в моем фрейме данных будут значения outlier и not outlier рядом со значениями.

1 Ответ

2 голосов
/ 01 октября 2019

нашел способ

isolation_forest = IsolationForest(n_estimators=100, behaviour="new",
                                   contamination='auto')
model = isolation_forest.fit(x)
df['outliers'] = model.predict(x)
print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...