我对数据应用了异常检测算法,现在我想找出某个值在异常向量中出现了多少次。由于我想发现过剩异常,而我的教授不会让我使用统计方法,因此我尝试使用具有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的行。我尝试了所有我知道的方式。

最佳答案

我想我现在已经知道您要做什么。 931让我有些困惑,现在,我认为您只是在尝试过滤所有actor值为931的“正常”情况(它只是一个标签)。因此,如果您这样打印,则将选择所有带有标签931 EACH TIME的行。那不是你想要的。因此,您要首先滤除所有具有actor == 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])


您可能需要原始数组的实际索引,因此请在过滤actor == 931个案例时首先存储它们。现在,这对您的Mariana有意义吗?让我知道:)

10-07 14:06