Menu
CoddyTech

이상 점수

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

예 또는 아니요만으로는 행이 얼마나 이상한지 알 수 없습니다. score_samples는 모든 행에 점수를 부여합니다. 점수가 낮을수록 더 이상합니다. 약국의 처방전을 살펴보겠습니다.

forest = IsolationForest(random_state=0).fit(X)
rx["score"] = forest.score_samples(X)
print(rx.sort_values("score").head(3))

가장 이상한 세 가지를 출력합니다:

     pills  refills  price     score
17     300        0  120.0 -0.881478
88      28       11   11.5 -0.708524
120     30        1   64.0 -0.700620

처방전 150개의 이상 점수 히스토그램: 대부분 -0.55에서 -0.35 사이에 있고, 일부는 왼쪽으로 -0.88까지 이어지며, -0.6에 빨간색 점선 임계값이 표시되어 있어 확인할 항목은 4개입니다

어디서 자를지는 여러분의 선택입니다. 한 사람이 확인할 수 있는 행은 몇 개일까요? 순위를 매기려면 정렬하고, 기준값과 비교해 표시하세요.

challenge icon

챌린지

중급

감사 담당자는 몇 건의 비용 청구만 검토할 시간이 있습니다. 시작 코드는 isolation forest를 학습하고, 프로그램은 n과 임계값을 읽습니다.

  1. 모든 청구 건의 점수를 새 열 score에 기록합니다.
  2. 아래와 같이 가장 특이한 청구 건 n개를 가장 특이한 순서대로 출력합니다.
  3. 임계값보다 낮은 점수를 받은 청구 건이 몇 개인지 출력합니다.

다른 회사의 경우, 2와 -0.6을 입력하면:

Most unusual claims:
  C003: 1960 EUR, score -0.763
  C040: 80 EUR, score -0.757
Below -0.6: 6 claims

직접 해보기

import pandas as pd
from sklearn.ensemble import IsolationForest

# 경비 청구 건당 한 행: 금액, 영수증, 청구서를 제출한 시간, 출장 후 경과 일수
claims = pd.read_csv("claims.csv")
X = claims[["amount_eur", "items", "hour", "days_late"]]
n = int(input())
threshold = float(input())

# Isolation Forest에서 생성한 forest: 모든 청구 건으로 학습됨
forest = IsolationForest(random_state=0).fit(X)

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

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

비지도 학습의 모든 레슨

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