Индекс Джини меток погодных наблюдений

тема: Энтропия, Gini и сплит · уровень: базовый

Условие

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

Для набора метеометок вычисляется индекс Gini:

\[ G = 1 - \sum_{c} p_c^2, \]

где сумма берётся по всем различным меткам, а \(p_c\) — доля наблюдений с меткой \(c\). Все идентификаторы из первой таблицы встречаются во второй таблице ровно по одному разу.

Значения температуры и влажности нужны только для описания наблюдений и на вычисление не влияют. Пропуск измерения обозначается строкой NA и также не влияет на вычисление.

При равенстве частот нескольких меток каждая из них отдельно учитывается в сумме формулы, выбор одной метки не производится.

Индекс Gini следует вывести ровно с тремя знаками после точки. Используется обычное форматирование до трёх знаков после точки.

Формат ввода

В первой строке дано целое число n — число наблюдений.

В следующих n строках дана первая таблица. Каждая её строка содержит три значения: идентификатор наблюдения id, температуру воздуха temperature и относительную влажность humidity.

В следующих n строках дана вторая таблица. Каждая её строка содержит идентификатор наблюдения id и его метеометку label.

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

Выведите индекс Gini набора из n метеометок, записанный ровно с тремя знаками после точки.

Ограничения

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

Куда дальше