Menu
CoddyTech

이상치 찾기

Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 34번째.

이 장에서는 이상한 행을 찾아냅니다. 장을 마칠 때쯤이면 서버의 수상한 분을 동그라미로 표시하게 됩니다:

웹 서버의 어느 밤, 초당 요청 수는 가로축에, 지연 시간은 세로축에 표시되어 있습니다. 촘촘하게 상승하는 점 구름과 두 탐지기가 일치하는, 빨간색으로 동그라미 친 외로운 4분이 보입니다

이상치는 나머지와 다른 드문 행입니다. 고장, 사기, 오타 등이 이에 해당합니다. 새로운 이상치는 모두 다르므로 미리 라벨을 지정할 수 없습니다.

z 점수부터 시작하세요. StandardScaler는 모든 열을 z 점수로 변환하므로, 한 줄로 값이 3을 초과하는 행을 모두 표시할 수 있습니다.

z = StandardScaler().fit_transform(X)
odd = (np.abs(z) > 3).sum(axis=1) > 0

온도에 따라 증가하는 교량 센서의 변형률. 나머지보다 훨씬 높은 측정값 하나에 빨간색 원이 그려져 있으며, 변형률 z 점수가 3을 초과해 표시되었습니다. 27도에서 추세보다 낮은 측정값 하나에는 주황색 원이 그려져 있습니다. 누락된

하지만 행은 각 열에서는 평범해도 조합에서는 특이할 수 있습니다. 열의 z 점수로는 이를 놓칩니다.

challenge icon

챌린지

중급

한 슈퍼마켓에서 냉동고 80대의 하루 평균을 기록했습니다. 어떤 냉동고를 기술자가 점검해야 할까요? 프로그램은 임계값을 입력받습니다.

  1. X의 모든 열을 z 점수로 변환합니다.
  2. 각 열에 대해, 해당 열에서 표시된 냉동고가 몇 대인지 출력합니다. z 점수가 0에서 임계값보다 더 멀리 떨어져 있습니다.
  3. 열 중 하나라도 표시된 냉동고를 표에 있는 순서대로 모두 출력합니다.

다른 매장과 3의 경우:

temp_c: 1 flagged
power_kw: 2 flagged
door_openings: 0 flagged
defrost_min: 0 flagged
Freezers to check:
  F05
  F13
  F51

직접 해보기

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler

# 냉동 진열대당 한 행: 하루 평균값
freezers = pd.read_csv("freezers.csv")
columns = ["temp_c", "power_kw", "door_openings", "defrost_min"]
X = freezers[columns]
cutoff = float(input())

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

비지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러