J'ai un script python qui crée une liste de listes de disponibilité du serveur et de données de performance, où chaque sous-liste (ou «ligne») contient les statistiques d'un cluster particulier. Par exemple, bien formaté, il ressemble à ceci:
------- ------------- ------------ ---------- -------------------
Cluster %Availability Requests/Sec Errors/Sec %Memory_Utilization
------- ------------- ------------ ---------- -------------------
ams-a 98.099 1012 678 91
bos-a 98.099 1111 12 91
bos-b 55.123 1513 576 22
lax-a 99.110 988 10 89
pdx-a 98.123 1121 11 90
ord-b 75.005 1301 123 100
sjc-a 99.020 1000 10 88
...(so on)...
Donc, sous forme de liste, cela pourrait ressembler à:
[[ams-a,98.099,1012,678,91],[bos-a,98.099,1111,12,91],...]
Ma question:
- Quelle est la meilleure façon de déterminer les valeurs aberrantes dans chaque colonne? Ou les valeurs aberrantes ne sont-elles pas nécessairement le meilleur moyen d'attaquer le problème de la découverte de la «méchanceté»?
Dans les données ci-dessus, je voudrais certainement en savoir plus sur bos-b et ord-b, ainsi que sur ams-a car son taux d'erreur est si élevé, mais les autres peuvent être ignorés. Selon la colonne, puisque plus haut n'est pas nécessairement pire, ni plus bas, j'essaie de trouver le moyen le plus efficace de le faire. On dirait que numpy est souvent mentionné pour ce genre de choses, mais je ne sais pas par où commencer même (malheureusement, je suis plus administrateur système que statisticien ...). Lorsque j'ai demandé à Stack Overflow, quelqu'un a mentionné l'utilisation de la fonction scoreatpercentile de numpy et a jeté quoi que ce soit au-dessus du 99e centile - cela semble-t-il une bonne idée?
(Transféré par stackoverflow, ici: /programming/4606288 )