Menu
CoddyTech

Isolation Forest

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

이상치는 쉽게 분리할 수 있습니다. 한 점만 남을 때까지 데이터를 무작위로 계속해서 나누세요:

같은 산점도를 두 번 보여 주며, 회색 무작위 분할선으로 나눈 모습. 왼쪽: 모서리 위쪽에 멀리 떨어진 점은 2번 분할 후 단독으로 남는다. 오른쪽: 군집 한가운데 있는 점은 8번 분할해야 한다

멀리 떨어진 점은 2번의 분할이 필요했고, 밀집된 점은 8번이 필요했습니다. 격리 포리스트는 100개의 무작위 트리에서 분할 횟수를 평균 냅니다:

from sklearn.ensemble import IsolationForest
forest = IsolationForest(contamination=0.02, random_state=0)
flags = forest.fit_predict(X)

fit_predict은 이상치 행에는 -1을, 나머지 행에는 1을 반환합니다. contamination은 이상치일 것으로 예상하는 행의 비율입니다.

challenge icon

챌린지

중급

항구에서 크레인 작업 교대 160건을 기록했습니다. 시간당 작업 횟수와 작업당 에너지 사용량이 포함되어 있습니다. 어떤 교대가 이상했을까요?

  1. 고립 포레스트를 사용해 contamination=0.03, random_state=0으로 교대를 표시하세요. 아래와 같이 개수를 출력하세요.
  2. 정상 교대는 normal이라는 레이블이 붙은 점으로 산점도에 표시하세요.
  3. 표시된 교대는 원으로 둘러싸세요: s=150, facecolors="none", edgecolors="red". flagged라는 레이블을 붙이세요. 범례를 추가하고 그래프를 표시하세요.

교대가 200건인 다른 항구의 경우:

Flagged: 6 of 200 shifts

아래로 떨어지는 구름 모양으로 점들이 표시된 크레인 교대 산점도. 더 빠른 크레인은 작업당 에너지를 덜 사용하며, 주변의 외따로 떨어진 교대 6건은 빨간 원으로 표시되어 있고 범례가 있음

이어서 Coddy가 차트를 설명합니다.

직접 해보기

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest

# 항구의 크레인 작업 교대별로 한 행씩: 작업 속도와 에너지 사용량
shifts = pd.read_csv("cranes.csv")
X = shifts[["moves_per_hour", "kwh_per_move"]]

# 아래 줄은 변경하지 마세요
fig, ax = plt.subplots()
ax.set_title("Crane Shifts")
ax.set_xlabel("Moves per hour")
ax.set_ylabel("Energy per move (kWh)")

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

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

비지도 학습의 모든 레슨

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