Saya memiliki skrip python yang membuat daftar daftar server uptime dan data kinerja, di mana setiap sub-daftar (atau 'baris') berisi statistik cluster tertentu. Misalnya, diformat dengan baik itu terlihat seperti ini:
------- ------------- ------------ ---------- -------------------
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)...
Jadi dalam bentuk daftar, ini mungkin terlihat seperti:
[[ams-a,98.099,1012,678,91],[bos-a,98.099,1111,12,91],...]
Pertanyaan saya:
- Apa cara terbaik untuk menentukan outlier di setiap kolom? Atau apakah outlier tidak selalu merupakan cara terbaik untuk menyerang masalah menemukan 'kejahatan'?
Dalam data di atas, saya pasti ingin tahu tentang bos-b dan ord-b, serta ams-a karena tingkat kesalahannya sangat tinggi, tetapi yang lain bisa dibuang. Bergantung pada kolomnya, karena lebih tinggi tidak selalu lebih buruk, juga tidak lebih rendah, saya mencoba mencari cara paling efisien untuk melakukan ini. Sepertinya numpy disebutkan banyak untuk hal-hal semacam ini, tetapi tidak yakin di mana untuk memulai dengan itu (sayangnya, saya lebih sysadmin daripada ahli statistik ...). Ketika saya bertanya di Stack Overflow, seseorang menyebutkan menggunakan fungsi scoreatpercentile numpy dan membuang apa pun di atas persentil ke-99 - apakah itu sepertinya ide yang bagus?
(Diposting silang dari stackoverflow, di sini: /programming/4606288 )