Menu
CoddyTech

回顾:服务器监控

本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 38 课,共 51 课。

challenge icon

挑战

中等

一台 Web 服务器记录了夜班期间每分钟的数据。哪些分钟确实很异常?

  1. 对这四个 columns 进行缩放。
  2. 使用孤立森林(contamination=0.03、random_state=0)和 LOF(n_neighbors=20、contamination=0.03)标记异常分钟。
  3. 按时间顺序打印两种方法都标记的分钟,如下所示。
  4. 用散点图绘制每分钟的数据,横轴为请求数,纵轴为延迟,标签为 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 服务器夜班期间每分钟对应一行数据
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 在线编译器