Прогноз срока выдачи книги методом k ближайших
Условие
В файле data.csv хранится каталог библиотечных выдач. Для каждой книги указаны число страниц, год издания и средний фактический срок выдачи в днях.
Требуется предсказать средний срок выдачи книги с заданным числом страниц и годом издания методом k ближайших соседей. Строки с пропуском хотя бы в одном из трёх числовых столбцов не участвуют в расчёте.
Для каждой подходящей строки вычисляется евклидово расстояние между книгой из запроса с параметрами (p, y) и строкой каталога с параметрами (pages, publication_year):
d = sqrt((pages - p)^2 + (publication_year - y)^2).
Из подходящих строк выбираются k строк с наименьшими расстояниями. Прогноз равен обычному среднему значений avg_issue_days у выбранных строк. При равенстве расстояний раньше выбирается строка, расположенная раньше в файле data.csv. Гарантируется, что в файле имеется не менее k строк без пропусков в числовых столбцах.
Формат ввода
В первой и единственной строке stdin записаны три целых числа p y k через пробел:
p— число страниц книги, для которой строится прогноз;y— год издания книги;k— число ближайших соседей.
Рядом с программой находится файл data.csv в кодировке UTF-8. Разделитель в файле — запятая, первая строка содержит заголовки. Файл содержит столбцы catalog_id, pages, publication_year, avg_issue_days. В числовых столбцах могут встречаться пустые значения.
Формат вывода
Выведите прогнозируемый средний срок выдачи в днях с двумя знаками после точки.
Ограничения
В файле от 300 до 2000 строк с данными, не считая заголовка.
40 <= p <= 1200.
1900 <= y <= 2025.
1 <= k <= 100.
В столбце catalog_id находится строка длиной 6 символов вида B и пяти цифр.
Непустое значение pages является целым числом от 40 до 1200.
Непустое значение publication_year является целым числом от 1900 до 2025.
Непустое значение avg_issue_days является вещественным числом от 1.0 до 60.0.
Гарантируется, что число строк без пропусков во всех трёх числовых столбцах не меньше k.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки
- Перечневые олимпиады: что это и что дают — весь перечень Минобрнауки: уровни, срок диплома, разрезы по предметам и классам