Python печатает только строки, которые соответствуют, если и для, обнаружение аномалий для избыточности - PullRequest
0 голосов
/ 05 декабря 2018

Я применил алгоритм обнаружения аномалий к своим данным, и теперь я хочу выяснить, сколько раз определенное значение появляется в векторе аномалий.Так как я хочу найти аномалии избыточности, и мой профессор не позволяет мне использовать статистические методы, я пытаюсь использовать алгоритм обнаружения аномалий с 90% -ным загрязнением, и те, которые будут считаться нормальными, это будут те, которые появляются чаще всего, и ябудет интерпретировать это как аномалии.Это всего лишь тест, который, вероятно, потерпит неудачу, но чтобы доказать это, мне нужно напечатать, сколько раз определенное значение появляется в строках, которые считаются нормальными.Будучи выбросом вектором, который говорит мне, являются ли они нормальными или аномальными (1 или -1), и df5 - мой фрейм данных с данными.Это то, что я пытаюсь, я пытаюсь сделать это для единственного значения, потому что это кажется более простым, но даже при этом я терплю неудачу.

    value=1
    for i in range(len(outliers)):
        if outliers[i] == value:
            print(df5.loc[df5['actor']==931])

Это передается все время, что функция'actor' - 931 n раз, и я хочу, чтобы он возвращал строки, в которых функция 'actor' равна 931, когда эта строка считается нормальной.Я перепробовал все способы, которые я знаю, как.

1 Ответ

0 голосов
/ 05 декабря 2018

Кажется, теперь я понял, что вы пытаетесь сделать.931 немного запутал меня, теперь я думаю, что вы просто пытаетесь отфильтровать все «нормальные» случаи, для которых значение актера равно 931 (это просто метка).Поэтому, если вы печатаете так, вы выберете все строки с меткой 931 КАЖДОЕ ВРЕМЯ.Это не то, что вы хотите.Таким образом, вы хотите отфильтровать все метки с актером == 931 и их соответствующими значениями выбросов в первую очередь.Затем просто сделайте

value=1
for i in range(len(outliers)):
    if outliers[i] == value: #then normal not excessivity
        print (i) # you will get the indexes of the filtered array where actor == 931
        print(actual_index[i]) 

, вам, вероятно, нужен фактический индекс исходного массива, поэтому сохраняйте их, когда вы сначала фильтруете актер == 931 случай.Теперь это имеет какое-то значение для вас, Мариана?Дай мне знать :)

...