Isolation Forest
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 35번째.
이상치는 쉽게 분리할 수 있습니다. 한 점만 남을 때까지 데이터를 무작위로 계속해서 나누세요:
멀리 떨어진 점은 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은 이상치일 것으로 예상하는 행의 비율입니다.
챌린지
중급항구에서 크레인 작업 교대 160건을 기록했습니다. 시간당 작업 횟수와 작업당 에너지 사용량이 포함되어 있습니다. 어떤 교대가 이상했을까요?
- 고립 포레스트를 사용해
contamination=0.03,random_state=0으로 교대를 표시하세요. 아래와 같이 개수를 출력하세요. - 정상 교대는
normal이라는 레이블이 붙은 점으로 산점도에 표시하세요. - 표시된 교대는 원으로 둘러싸세요:
s=150, facecolors="none", edgecolors="red".flagged라는 레이블을 붙이세요. 범례를 추가하고 그래프를 표시하세요.
교대가 200건인 다른 항구의 경우:
Flagged: 6 of 200 shifts이어서 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)")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러