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