サーバーの稼働時間とパフォーマンスデータのリストのリストを作成するpythonスクリプトがあり、各サブリスト(または「行」)には特定のクラスターの統計が含まれています。たとえば、適切にフォーマットされた次のようになります。
------- ------------- ------------ ---------- -------------------
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)...
したがって、リスト形式では次のようになります。
[[ams-a,98.099,1012,678,91],[bos-a,98.099,1111,12,91],...]
私の質問:
- 各列の外れ値を決定する最良の方法は何ですか?または、異常値は必ずしも「悪さ」を見つける問題を攻撃するための最良の方法ではないのですか?
上記のデータでは、bos-bとord-b、およびams-aについてエラー率が非常に高いため、間違いなく知りたいと思いますが、その他は破棄できます。列に応じて、高いほど必ずしも悪いわけではなく、低いわけでもないので、これを行う最も効率的な方法を見つけようとしています。numpyはこの種のものについて多く言及されているようですが、どこから始めればよいかわかりません(残念ながら、私は統計学者よりもシステム管理者です...)。Stack Overflowで質問したところ、誰かがnumpyのscoreatpercentile関数を使用して99パーセンタイル以上のものをスローしたと述べました-それは良い考えのようですか?
(stackoverflowからクロス投稿、ここ:https : //stackoverflow.com/questions/4606288)