Menu
CoddyTech

Оценки аномальности

Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 37 из 51.

Ответ «да» или «нет» скрывает, насколько необычна строка. 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

Задание

Средне

У аудитора есть время проверить лишь несколько заявок на возмещение расходов. Стартовый код обучает модель леса изоляции; программа считывает 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 = IsolationForest(random_state=0).fit(X)

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Обучение без учителя

Потренируйтесь самостоятельно: Онлайн-компилятор Python