Классификация по фиксированному правилу

68 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Фермер Джон решил использовать данные о своём стаде коров,
чтобы построить автоматический распознаватель, имеет корова
пятна или нет.

К несчастью, ФД не ученье удачно собрал данные о своих коровах
Для каждой из его N(1 <= N <= 50,000) коров, всё что он знает, это
вес коровы и имеет или нет она пятна. Все его коровы имеют
различный вес. По этим данным он построил то, что он назвал,
"классификатор ближайшего соседа". Чтобы угадать, есть у новой
коровы C пятно или нет, он сначала находит в своём стаде корову С'
такую, что её вес ближайший к C'. Если корова C' имеет пятна,
то ФД предполагает, что корова C имеет пятна, если корова C'
не имеет пятен, то ФД предполагает, что и корова C не имеет пятен.
Если же уникального ближайшего соседа нет, а есть две коровы
на одинаковом минимальном расстоянии от C', тогда ФД предполагает,
что корова C имеет пятна, если одна из двух ближайших коров
также имеется пятна.

ФД хочет проверить свой автопредсказатель пятнистости на группе
новых коров, которые только что прибыли на его ферму.
После взвешивания новых коров он обнаружил, что они имеют веса
всех целых чисел в интервале от A до B включительно.

Пожалуйста, определите, сколько из этих коров будут классифицированы
как имеющие пятна. Заметим, что классификатор делает предсказание,
основываясь на данных об N существующих коровах.
Также заметим, что A и B могут быть достаточно большими числами,
так что просто проверка всех чисел по одному от A до B не пройдёт
по времени.

Формат входных данных

Первая строка ввода содержит три целых числа N,A,B
(1 <= A <= B <= 1,000,000,000).

Каждая из следующих N строк описывают одну корову. Каждая строка
содержит либо S W, означающее, что корова с весом W имеет пятна
или NS W, означающее, что корова с весом W не имеет пятен.
Все веса - целые числа в интервале 1 ... 1 000 000 000.

Формат выходных данных

Одно целое число - количество коров из прибывших,
которых алгоритм ФД классифицирует как пятнистых.

В приведенном примере новые коровы с весами
1, 2, 7, 8, 9, 10
будут классифицированы как пятнистые.

Как изменение параметра minPts влияет на форму k-distance графика и выбор εε?

  1. При увеличении minPts k-расстояния уменьшаются, и локоть смещается к нулю
  2. minPts влияет только на итоговые кластеры и никак не связан с k-distance графиком
  3. При увеличении minPts k-расстояния, как правило, возрастают, и локоть смещается вправо и вверх
  4. Изменение minPts вообще не рекомендуется, он всегда фиксирован

Как выбор параметра k (количество соседей для k-distance) связан с параметром minPts в DBSCAN?

  1. Часто выбирают k=minPts или k=minPts−1
  2. Обычно выбирают k=1, независимо от minPts
  3. Связи между k и minPts нет, они подбираются совершенно независимо
  4. k всегда должен быть намного больше minPts
Зачем сортировать k-расстояния по возрастанию перед построением k-distance графика?
  1. Чтобы разнесённые во времени наблюдения шли подряд
  2. Чтобы визуально выделить резкий переход от плотных областей к шуму
  3. Чтобы получить симметричный график относительно середины
  4. Чтобы можно было напрямую прочитать индексы кластеров

На k-distance графике по оси абсцисс отложены отсортированные объекты датасета. Что обычно показывается по оси ординат?

Выберите верный вариант ответа
  1. Расстояние до ближайшего соседа k=1 для каждого объекта
  2. Индекс объекта в исходном порядке выборки
  3. Среднее расстояние от объекта до всех других объектов
  4. Расстояние до k-го ближайшего соседа для каждого объекта

Реализуйте алгоритм k-means для одномерных данных (только координата x).

Для одномерных данных расстояние между точками вычисляется как модуль разности: |x₁ - x₂|

При равном расстоянии до нескольких центров точка присваивается кластеру с меньшим номером.

 

Формат входных данных

- Первая строка: два целых числа n и k (1 ≤ k ≤ n ≤ 1000) — количество точек и кластеров

- Вторая строка: n целых чисел через пробел — значения точек (−10⁶ ≤ xᵢ ≤ 10⁶)

- Третья строка: k вещественных чисел через пробел — начальные центры кластеров

 

Формат выходных данных

- Первая строка: k вещественных чисел — финальные центры кластеров (округлённые до 1 знака после запятой)

- Вторая строка: n целых чисел — номер кластера (0-индексация) для каждой точки в порядке их появления во входных данных

Учёный решил провести кластеризацию множества звёзд по их расположению на карте звёздного неба. Кластер звёзд — это набор звёзд (точек), лежащих внутри прямоугольника высотой H и шириной W. Каждая звезда принадлежит ровно одному кластеру. Центроид кластера — это одна из звёзд кластера, сумма расстояний от которой до всех остальных звёзд этого кластера минимальна. Расстояние между звёздами вычисляется по формуле Евклида: \(d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}\)

Вам дан список координат звёзд и количество кластеров k. Известно, что все кластеры имеют размер \(H \times W\) и чётко разделены (расстояние между кластерами значительно больше их размера).

Необходимо:

1. Разделить звёзды на k кластеров

2. Найти центроид каждого кластера

3. Вычислить \(P_x\) — среднее арифметическое x-координат всех центроидов

4. Вычислить \(P_y\) — среднее арифметическое y-координат всех центроидов

5. Вывести результат в заданном формате

 

Формат входных данных

- Первая строка содержит два целых числа n и k (\(1 \le n \le 1000\), \(1 \le k \le 10\)) — количество звёзд и количество кластеров.

- Вторая строка содержит два вещественных числа H и W — размеры каждого кластера.

- Следующие n строк содержат по два вещественных числа \(x_i\)и \(y_i\) (\(-10^6 \le x_i, y_i \le 10^6\)) — координаты звёзд.

 

Формат выходных данных

Выведите два целых числа через пробел:

- Целую часть от \(|P_x \times 10000|\)

- Целую часть от \(|P_y \times 10000|\)

где |x| обозначает абсолютное значение числа x.

Даны точки на координатной плоскости:

A(1, 1), B(2, 1), C(1, 2), D(8, 8), E(9, 8), F(8, 9)

Центры кластеров:
C1(1.5, 1.5) и C2(8.5, 8.5)

К какому кластеру относится точка G(5, 5)?
  1. Кластер 1 (C1)
  2. Кластер 2 (C2)
  3. На границе кластеров (равные расстояния)
  4. Не относится ни к одному кластеру
Что такое центроид (центр кластера) в алгоритме k-means?

1) Самая первая точка в кластере
2) Точка со средними координатами всех точек кластера
3) Точка, которая находится дальше всего от других кластеров
4) Случайная точка из кластера
Алгоритм K-Means — это итеративный алгоритм кластеризации, который разбивает множество точек на K кластеров. Алгоритм работает следующим образом:

1. Инициализация: задаются начальные координаты K центров кластеров
2. Назначение: каждая точка относится к кластеру с ближайшим центром (по евклидову расстоянию)
3. Пересчёт: центр каждого кластера пересчитывается как среднее арифметическое координат всех точек, принадлежащих этому кластеру
4. Проверка сходимости: если центры не изменились — алгоритм завершается, иначе переход к шагу 2

Евклидово расстояние между точками \((x_1, y_1)\) и \((x_2, y_2)\)вычисляется по формуле: \(d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}\)

Реализуйте алгоритм K-Means и выведите результат его работы.

Формат входных данных

- Первая строка содержит два целых числа n и k (1 <= n <= 1000, 1 <= k <= 10, k <= n) — количество точек и количество кластеров.
- Следующие n строк содержат по два вещественных числа xi и yi (-106 <= xi, yi <= 106) — координаты точек.
- Следующие k строк содержат по два вещественных числа cxj и cyj (-106 <= cxj, cyj <= 106) — начальные координаты центров кластеров.


Формат выходных данных

- Первая строка должна содержать одно целое число — количество итераций, выполненных до сходимости.
- Следующие k строк должны содержать по два вещественных числа — финальные координаты центров кластеров (в том же порядке, что и во входных данных). Координаты выводить с точностью до 2 знаков после запятой.
- Следующие n строк должны содержать по одному целому числу — номер кластера для каждой точки (нумерация с 0, в том же порядке, что и точки во входных данных).
 
Примечания
- Сходимость достигается, когда координаты всех центров не изменяются между итерациями (с точностью до вычислительной погрешности 1e-9)
- При сравнении расстояний, если точка равноудалена от нескольких центров, она относится к кластеру с меньшим номером
- Если кластер оказался пустым (ни одна точка не была к нему отнесена), его центр остаётся на прежнем месте
- Гарантируется, что алгоритм сойдётся не более чем за 100 итераций

Напишите программу, которая пересчитывает координаты центров кластеров.

Формат входных данных:

Первая строка: n k — количество точек и кластеров
Следующие n строк: x y c — координаты точки и номер её кластера (числа x, y - вещественные, c - целое число)
 

Формат выходных данных:

k строк: новые координаты центров (округлённые до 2 знаков)

Дан набор точек и k центров кластеров. Для каждой точки определите номер ближайшего центра (нумерация с 0). Расстояние между точками считается евклидовым. Если точка имеет одинаковое минимальное расстояние для двух и более кластеров, то ее необходимо определить к кластеру с наименьшим номером.

Формат входных данных:
Первая строка: n — количество точек (1 ≤ n ≤ 1000). Следующие n строк: xi yi — координаты i-й точки (целые числа, |xi|, |yi| ≤ 10000) Следующая строка: k — количество центров (1 ≤ k ≤ 10) Следующие k строк: cxi cyi — координаты j-го центра (целые числа, |cxi|, |cyi| ≤ 10000)

Формат выходных данных:
Одна строка с n числами — номера ближайших центров для каждой точки (0 ≤ номер < k)

Вычислите среднее арифметическое всех порогов (threshold) во внутренних узлах дерева.

Формат входных данных
JSON с деревом решений.

Формат выходных данных
Одно число — среднее значение порогов с точностью до 4 знаков после запятой.

Дано дерево решений и вектор признаков объекта. Определите, какой класс предскажет дерево.
Правило обхода
Если x[feature_index] <= threshold, идём в left_child
Иначе идём в right_child
Когда достигли листа, возвращаем его class


Формат входных данных
Первая строка: JSON с деревом. Вторая строка: признаки объекта через пробел.

Формат выходных данных
Одно число — предсказанный класс.
Поделиться
Класснуть