振り返り:サーバー監視
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 38/51。
チャレンジ
中級Webサーバーは夜勤中の毎分のデータを記録しました。本当に異常だったのはどの分でしょうか?
- 4つの
columnsをスケーリングします。 - Isolation Forest(
contamination=0.03、random_state=0)とLOF(n_neighbors=20、contamination=0.03)で異常な分を検出します。 - 両方で異常と判定された分を、以下のように時刻順に出力します。
- すべての分を散布図にし、横軸にリクエスト数、縦軸にレイテンシをとり、
minutesとラベル付けします。両方で異常と判定された分を赤い円で囲み、both detectorsとラベル付けします。凡例を追加して表示します。
別の夜の場合:
Both detectors flag 5 minutes:
00:25: 1116 requests/s, 186 ms
01:10: 2106 requests/s, 95 ms
02:00: 1151 requests/s, 133 ms
02:40: 835 requests/s, 142 ms
03:10: 1774 requests/s, 82 ms続いてCoddyがグラフを説明します。
自分で試してみよう
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor
# Webサーバーの夜間シフト中、1分につき1行
log = pd.read_csv("servers.csv")
columns = ["cpu_pct", "memory_gb", "requests_per_s", "latency_ms"]
# 以下の行は変更しないでください
fig, ax = plt.subplots()
ax.set_title("Server Watch")
ax.set_xlabel("Requests per second")
ax.set_ylabel("Latency (ms)")
# 以下にコードを書いてください
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ