TGViewer
Data Science | Machinelearning [ru] Data Science | Machinelearning [ru] @devsp · 19.8K subscribers
Post #5066 2.07K
👩‍💻 Определение "аномального" элемента в сбалансированных данных

Вам передаётся сбалансированный набор объектов из 3-х различных классов (например, "cat", "dog", "bird").

Каждый объект представлен вектором признаков (list of floats). Один объект — подброшенный и не принадлежит ни одному из трёх известных классов: он отличается распределением.

Ваша задача — реализовать функцию detect_outlier(data: List[List[float]], labels: List[str]) -> int, которая возвращает индекс выброса в списке. Гарантируется, что в labels один лейбл может быть "unknown", а может и вовсе отсутствовать — выброс может быть замаскирован.

Метрика — средняя евклидова дистанция до других представителей того же класса должна быть на порядок выше, чем у нормальных объектов.

Пример данных:

data = [
[1.1, 0.9], [1.2, 1.0], [0.9, 1.1], # cat
[3.0, 3.1], [2.9, 3.0], [3.1, 2.9], # dog
[5.0, 5.1], [5.1, 5.0], [8.0, 8.0], # last — выброс
]

labels = ["cat", "cat", "cat", "dog", "dog", "dog", "bird", "bird", "bird"]


Решение задачи🔽

import numpy as np
from collections import defaultdict

def detect_outlier(data, labels):
data = np.array(data)
grouped = defaultdict(list)

for i, label in enumerate(labels):
grouped[label].append(i)

outlier_idx = -1
max_score = -1

for i, point in enumerate(data):
label = labels[i]
others = [j for j in grouped[label] if j != i]
if not others:
continue

distances = [np.linalg.norm(point - data[j]) for j in others]
avg_dist = np.mean(distances)

if avg_dist > max_score:
max_score = avg_dist
outlier_idx = i

return outlier_idx

# Тест
print(detect_outlier(data, labels)) # ➜ 8
  • 🔥 3
  • ⚡ 1
  • ❤ 1
More from @devsp
  1. Oct 2, 2026Вайбкодим «Полный путь разработки AI-агентов: от MCP до Agentic RAG» Образовательная прогр…
  2. Oct 2, 2026🤣 Правильно расставленные приоритеты в моей жизни би лайк: 💥 xCode Journal
  3. Oct 1, 2026🤯 Люди взбунтовались против «пыточной для ИИ» На GitHub заметили открытый проект AI Tortu…
  4. Oct 1, 2026День в Заонежье начинается ещё в дороге. Мы встретим вас в аэропорту или на вокзале. Дальш…
  5. Sep 30, 2026Две ИИ-фабрики в Армении: что там отгрохали и на кого это в итоге пашет В августе в Раздан…
  6. Sep 30, 2026Из Москвы в Миннеаполис — с тремя решениями для улучшения персонализации в рекомендательны…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →