К содержанию

Задание 27 · Анализ данных

Практика и итог

Вся тема на одной странице: как решилась задача темы, главное из подтем, порядок решения и частые ошибки.

Одна задача — вся тема

Задача темы — частицы из файла 27-4.txt: Q₁ по парам с признаком II и Q₂ по центрам — собиралась из функций всех пяти основных подтем. Пролистай версии: точками отмечены строки, которых не было в предыдущей.

  1. Подтема 1, «Точки и файл»: частица — запись, энергия — функция. Точками отмечены новые строки.
  2. Подтема 2, «Разделение на кластеры»: границы в пустых промежутках.
  3. Подтема 3, «Центр кластера»: центр — перебор кандидатов.
  4. Подтема 4, «Ответ по центрам»: ответ из центров по условию.
  5. Подтема 5, «Расстояния и пары»: пары — внутри каждого кластера. Ответ задачи темы — 772010 125026.

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

Карта темы

Каждая подтема дала один шаг решения, и любое решение собирается из них. Сверху — путь от файла к ответу, ниже — по блоку на подтему. Заголовок блока ведёт на подтему.

  1. Записипрочитать файл и построить рисунок
  2. Кластерыкаждая точка — ровно в одну группу
  3. Ответцентры и величины из условия

1Точки, расстояния и файл

  • dist(a, b)√(Δx² + Δy²); с порогом — квадраты
  • replace(",", ".").split()запятая, пробелы и табуляция
  • x = r · cos φугол — через radians

2Разделение на кластеры

  • if / elif / elseодна группа на точку, порядок важен
  • noiseаномалии — отдельно, не в последний кластер
  • границыв пустых промежутках: по координате, углу, энергии

3Центр кластера

  • total = 0.0внутри цикла: новая сумма для каждого кандидата
  • средняя точкане центр: центр — одна из точек
  • center_sum(g, energy_gap)своя формула расстояния из условия

4Ответ по центрам

  • Pₓ, P_yсредние координат центров
  • × 10000, intцелая часть, а не round

5Расстояния и пары точек

  • пары i < jкаждая пара один раз
  • внутри кластерасписок отобранных — заново в каждом

6Соседи, другие центры и статистикадополнительный урок

  • другой центрминимакс, сумма квадратов, точка наведения
Карта темы: путь к ответу сверху и главное из каждой подтемы. Номер блока — номер подтемы.

Как решать

Любое задание 27 решается одним порядком из пяти шагов. Каждому шагу ты уже учился — под ним номера подтем:

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

Проверочный рисунок: кластеры разными маркерами и центры поверх. Каждая граница должна проходить по пустому месту, а центр — лежать в своём кластере:

Файл example27.txt: кластеры разными маркерами, граница x = 5, центры (1; 1) и (11; 1) обведены.

Частые ошибки

Восемь ошибок встречаются чаще других, и каждую ловит один вопрос к себе. Выбери ошибку — увидишь, как её исправить, и вопрос, который её ловит:

запятая
float('1,5') → float('1,5'.replace(',', '.')). Спроси себя: какой разделитель дробной части в файле?подтема 1
градусы
cos(phi) → cos(radians(phi)). Спроси себя: получится ли из (90; 2) точка (0; 2)?подтема 1
последний else
аномалии попали в последний кластер → явные области и отдельный noise. Спроси себя: сколько точек в noise по условию?подтема 2
сумма кандидата
total = 0.0 стоит до внешнего цикла → новая сумма для каждого кандидата. Спроси себя: на пяти точках прямой центр — средняя?подтема 3
среднее
средняя точка принята за центр → центр — одна из точек кластера. Спроси себя: есть ли такая точка в файле?подтема 3
формула
центр по dist, а в условии разность энергий → center_sum(g, energy_gap). Спроси себя: какое «расстояние» в определении центра?подтема 3
модуль и round
round(q * 10000) → int(q * 10000). Спроси себя: просят целую часть или округление?подтема 4
пары вне кластера
пары собраны по всему файлу → список отобранных — заново в каждом кластере. Спроси себя: могут ли точки пары быть из разных кластеров?подтема 5

Итог

Тема пройдена: задача темы решена от чтения файла до ответа 772010 125026. Вот что взять с собой.

  • ПорядокЗаписи, кластеры, центры, ответ, проверка.
  • КластерыКаждая точка — в одну группу, аномалии отдельно.
  • ЦентрПеребор точек по формуле из условия.
  • ОтветПары — внутри кластера, int, а не round.
  • Задача темыQ₁ · 10000 = 772010, Q₂ · 10000 = 125026.

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1

Почему центр кластера ищут перебором точек, а не берут среднее координат?

ОтветСкрыть ответ
Ответ

По определению центр — одна из точек кластера с наименьшей суммой расстояний. Средняя точка в файле может и не встретиться.

Вопрос 2

Сумма размеров кластеров и аномалий совпала с числом точек. Значит, разделение верно?

ОтветСкрыть ответ
Ответ

Не обязательно: одну точку можно потерять, а другую учесть дважды. Нужен проверочный рисунок.

Вопрос 3

Как в задаче темы частица попадает в свою группу?

ОтветСкрыть ответ
Ответ

Номер группы — сколько границ 3.5, 7, 10.5 её энергия превысила: sum(energy(p) > b for b in bounds).

Вопрос 4

Получилось Q₁ = 3.14159. Что записать в ответ при «целая часть произведения на 10 000»?

ОтветСкрыть ответ
Ответ

31415: int(3.14159 * 10000) — дробную часть отбрасывают, а не округляют.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Расстояние между центрами

В файле 27-1.txt записаны точки двух кластеров. Найди расстояние между центрами кластеров. В ответе запиши целую часть произведения найденного расстояния на 10 000.

27-1.txtТочки двух кластеровТекстовый файл · 3,6 КБ

Введите число.

Точки чужого кластера

В файле 27-2.txt записаны точки трёх кластеров и ровно три аномалии. Найди наибольшее расстояние от центра кластера с наименьшим количеством точек до точки кластера с наибольшим количеством точек. В ответе запиши целую часть произведения найденного расстояния на 10 000.

27-2.txtТочки трёх кластеров и три аномалииТекстовый файл · 11,0 КБ

Введите число.

Белые карлики большого кластера

В файле 27-3.txt записаны звёзды трёх кластеров. Определи количество белых карликов (класс светимости VII) в кластере с наибольшим количеством звёзд.

27-3.txtЗвёзды: координаты и характеристикаТекстовый файл · 13,6 КБ

Введите число.

Кластеры в секторах

В файле 27-5.txt записаны точки трёх кластеров; каждый лежит внутри сектора радиуса 15 с центральным углом 20° и вершиной в точке C (2; −1). Найди Pₓ и P_y — средние арифметические абсцисс и ординат центров кластеров. В ответе запиши целые части произведений |Pₓ| · 10 000 и |P_y| · 10 000.

27-5.txtТочки трёх кластеров в секторахТекстовый файл · 4,4 КБ

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

Центры звёзд в полярных координатах

В файле 27-7.txt записаны звёзды двух кластеров в полярных координатах: в каждой строке — полярный угол φ в градусах и полярный радиус r. Кластеры лежат в разных секторах круга с центром в начале координат. Центр кластера — его звезда с наименьшей суммой расстояний до остальных звёзд кластера; расстояния считай на обычной плоскости. Найди Pₓ и P_y — средние арифметические абсцисс и ординат центров кластеров. В ответе запиши целые части произведений Pₓ · 10 000 и P_y · 10 000.

27-7.txtЗвёзды в полярных координатах: угол и радиусТекстовый файл · 3,3 КБ

Введите два числа через пробел в том порядке, в каком их спрашивают.