Обнаружение аномалий категориальных данных с помощью леса изоляции - PullRequest
0 голосов
/ 07 октября 2019

Мне интересно, можно ли обнаружить выбросы в категориальных данных. например, если у меня есть список:

l = ['fresh','good','nice','great','amazing','bad','tasty','funny','dirty']

Выброс в этом списке будет строки 'bad' и 'dirty'.

Если, например, у меня есть данные 10000 строк, и каждая строкаэто предложение между 2 и 10 словами, возможно ли обнаружить выбросы с помощью алгоритма Isolation forest? Какой кодер я должен использовать? Кроме того, я получаю ошибку, когда я пытаюсь запустить код, ошибка в этой строке:

    input_par = encoder.transform([val])

Это пример кода, который я написал:

import pandas as pd
from sklearn.ensemble import IsolationForest
from sklearn.model_selection import GridSearchCV
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, LabelEncoder, StandardScaler

l = ['fresh','good','nice','great','amazing','bad','tasty','funny','dirty',
'I love you', 'you are great', 'this is wrong', 'terrible']

df = pd.DataFrame({'my text': l})
x = df

# Transform the features
encoder = ColumnTransformer(transformers=[('onehot', OneHotEncoder(), ['my text'])], remainder='passthrough')
x = encoder.fit_transform(x)

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

list_of_val = ['i love this', 'catastrophic', 'no']

for val in list_of_val:

    input_par = encoder.transform([val])

    outlier = model.predict(input_par)
    #print(outlier)

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

    else:
        print('Values', val, 'are not outliers')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...