Ошибка классификатора птиц

тема: Вероятность и матожидание · уровень: базовый

Условие

В парке установлены камеры, которые распознают птиц на фотографиях. После ручной проверки для каждой фотографии известен настоящий вид птицы и вид, предсказанный классификатором.

По этим данным строится матрица ошибок: строка соответствует настоящему виду, а столбец — предсказанному. Для каждого вида из запроса требуется определить вероятность того, что классификатор ошибся, если он предсказал именно этот вид.

Для вида s считается величина

error(s) = количество фотографий, где предсказан s и настоящий вид не равен s / количество фотографий, где предсказан s.

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

Формат ввода

В первой строке даны два целых числа n и q — количество проверенных фотографий и количество видов в запросе.

В следующих n строках даны два названия вида: actual predicted. actual — настоящий вид птицы, predicted — вид, предсказанный классификатором.

В следующих q строках дано по одному названию вида s. Для каждого такого вида требуется найти error(s).

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

Выведите q строк. В строке с номером i выведите вероятность ошибки для вида из i-й строки запроса с ровно тремя знаками после десятичной точки.

Округление производится до ближайшего значения с тремя знаками после десятичной точки. Если следующая цифра равна 5, число округляется вверх.

Ограничения

1 <= n <= 1000.

1 <= q <= 1000.

Названия видов состоят из строчных латинских букв, их длина от 1 до 20.

В каждой из n строк названия actual и predicted удовлетворяют указанному ограничению длины.

Каждый вид из запроса встречается хотя бы в одной строке наблюдений в качестве predicted.

Решить задачу с автопроверкой на Python →

Куда дальше