Задание EGEINF9C8C86: Эффективная обработка данных и кластеры

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Эффективная обработка данных и кластеры.

Учебные темы: Анализ данных. Основные задачи анализа данных: прогнозирование, классификация, кластеризация, анализ отклонений. Последовательность решения задач анализа данных: сбор первичных данных, очистка и оценка качества данных, выбор и/или построение модели, преобразование данных, визуализация данных, интерпретация результатов. Программные средства и интернет-сервисы для обработки и представления данных. Большие данные. Машинное обучение; Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве.

Впишите правильный ответ.

Рисунок из условия ФИПИ

Задание выполняется с использованием прилагаемых
файлов.

 

Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на N непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри прямоугольника со сторонами длиной H и W, причём эти прямоугольники между собой не пересекаются. Стороны прямоугольников не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров прямоугольников.

Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных точек кластера минимальна. Для каждого кластера гарантируется единственность его центра. Расстояние между двумя точками на плоскости A(x1, y1)  
и B(x2, y2) вычисляется по формуле:

d(A, B)=(x2−x1)2+(y2−y1)2. 

В файле A хранятся координаты точек двух кластеров, где H = 6
и W = 4,5 для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y. Известно, что количество точек
не превышает 1000.

В файле Б хранятся координаты точек трёх кластеров, где H = 6,
W = 5 для каждого кластера. Известно, что количество точек
не превышает 10 000. Структура хранения информации в файле Б аналогична структуре в файле А.

Известно, что в файле Б имеются координаты ровно трёх «лишних» точек, являющихся аномалиями, возникшими в результате помех при передаче данных. Эти три точки не относятся ни к одному
из кластеров, их учитывать не нужно.

Для файла А определите координаты центра каждого кластера, затем найдите два числа: Px – среднее арифметическое абсцисс центров кластеров, и Py – среднее арифметическое ординат центров кластеров.

 

Для файла Б определите координаты центра каждого кластера, затем найдите два числа: Qx – сумму абсцисс центров кластеров
с минимальным и максимальным количеством точек, и Qy – сумму ординат центров кластеров с минимальным и максимальным количеством точек.

Гарантируется, что во всех кластерах количество точек различно.

 

В ответе запишите четыре числа: в первой строке – сначала абсолютную величину целой части произведения Px × 10 000,
затем абсолютную величину целой части произведения
Py × 10 000; во второй строке – сначала абсолютную величину целой части произведения Qx × 10 000, затем абсолютную величину целой части произведения Qy × 10 000.

Возможные данные одного из файлов проиллюстрированы графиком.

 

Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию.
Для выполнения задания используйте данные из прилагаемого файла

Рисунок из условия ФИПИ

 

 

Скачать файл задания (ZIP, ФИПИ)


i
СВОЙСТВА ЗАДАНИЯ
КЭС:
4.1 Анализ данных. Основные задачи анализа данных: прогнозирование, классификация, кластеризация, анализ отклонений. Последовательность решения задач анализа данных: сбор первичных данных, очистка и оценка качества данных, выбор и/или построение модели, преобразование данных, визуализация данных, интерпретация результатов. Программные средства и интернет-сервисы для обработки и представления данных. Большие данные. Машинное обучение
Тип ответа:Краткий ответ
Номер: 9C8C86
НЕ РЕШЕНО Ответить

Решение задания EGEINF9C8C86

Ответ: 55295 136872 319184 448643

Решение.
Используем координаты из двух файлов, а не пример рисунка в условии. В текстовых файлах первая строка — заголовок X Y, далее по одной точке на строку; десятичный разделитель — запятая. Точка нумеруется по строкам данных, начиная с 1, без заголовка.

Сначала выделим кластеры. Для этих конкретных файлов подходят следующие прямоугольники с границами x₁ < x < x₂ и y₁ < y < y₂. Стороны параллельны осям; условие допускает и такой частный случай. Размеры каждого прямоугольника А равны 4,5 × 6, каждого прямоугольника Б — 5 × 6.

Файл, кластерx₁x₂y₁y₂Точек
A, 14,80957031259,309570312517,07812523,078125137
A, 21,64843756,14843754,161132812510,161132812572
B, 14,019531259,0195312518,897460937524,8974609375397
B, 215,698242187520,698242187523,305664062529,3056640625137
B, 323,1562528,1562519,891601562525,891601562572

Внутри каждого файла прямоугольники попарно не пересекаются. Все точки А входят ровно в один из двух прямоугольников. В Б за пределами трёх прямоугольников остаются ровно три точки: 114, 266, 506 по номерам строк данных. Каждая из них удалена от любой другой точки больше диагонали прямоугольника √61; она не может входить вместе с другой точкой в такой кластер. Остальные точки все сохранены. По гарантированной в условии единственности разбиения найденные группы и есть требуемые кластеры.

Центр здесь — одна из исходных точек кластера, а не среднее арифметическое координат. Для каждого кандидата p считаем D(p) = Σ d(p, q), где q пробегает все точки того же кластера. Собственное расстояние равно нулю. Сравниваем D для всех кандидатов и выбираем точку с наименьшей суммой. Сумма квадратов расстояний дала бы другой критерий и не используется.

Полученные центры:

Файл, кластерТочекНомер центраx центраy центра
A, 11371207,103180319,817861
A, 2721873,95585827,556738
B, 13971186,572492422,0374135
B, 213717718,316151726,2694763
B, 37256025,345999922,8268984

Для А складываем две абсциссы и делим на 2; отдельно поступаем с ординатами. После умножения каждого среднего на 10000 берём абсолютную величину целой части: 55295 и 136872.

В Б наименьший кластер — № 3, в нём 72 точек; наибольший — № 1, в нём 397. Сравниваем количества точек, а не координаты или суммы расстояний.

Для Qₓ и Qᵧ берём суммы соответствующих координат двух выбранных центров. После умножения на 10000, взятия целой части и абсолютного значения получаем 319184 и 448643. Промежуточные координаты не округляем.

Программа Python. Сохраняем исходные текстовые файлы А и Б под именами A.txt и B.txt. Прямоугольники ниже рассчитаны по этим данным; для другого набора координат их требуется определить заново.

from math import dist, fsum, hypot, isqrt
from fractions import Fraction


def load(name):
    with open(name, encoding="utf-8-sig") as f:
        assert f.readline().split() == ["X", "Y"]
        return [tuple(map(Fraction, line.replace(",", ".").split()))
                for line in f if line.strip()]


def analyze(points, rectangles, anomalies):
    groups = [[] for box in rectangles]
    omitted = []
    for index, point in enumerate(points):
        x, y = point
        hits = [i for i, (x1, x2, y1, y2) in enumerate(rectangles)
                if x1 < x < x2 and y1 < y < y2]
        assert len(hits) <= 1
        if hits:
            groups[hits[0]].append(index)
        else:
            omitted.append(index)
    assert len(omitted) == anomalies
    for i in omitted:
        assert min(dist(points[i], p) for j, p in enumerate(points)
                   if j != i) > hypot(6, 5)
    centers = []
    for group in groups:
        assert group
        best = min(group, key=lambda i:
                   fsum(dist(points[i], points[j]) for j in group))
        centers.append(points[best])
    return groups, centers


def square(a, b):
    return sum((x - y) ** 2 for x, y in zip(a, b))


def scaled_root(q):
    q *= 100000000
    return isqrt(divmod(q.numerator, q.denominator)[0])

boxes = {'A': [[4.8095703125, 9.3095703125, 17.078125, 23.078125], [1.6484375, 6.1484375, 4.1611328125, 10.1611328125]], 'B': [[4.01953125, 9.01953125, 18.8974609375, 24.8974609375], [15.6982421875, 20.6982421875, 23.3056640625, 29.3056640625], [23.15625, 28.15625, 19.8916015625, 25.8916015625]]}
A = load("A.txt")
B = load("B.txt")
groups_a, centers_a = analyze(A, boxes["A"], 0)
groups_b, centers_b = analyze(B, boxes["B"], 3)
pa = [sum(c[k] for c in centers_a) * Fraction(1, 2)
      for k in (0, 1)]
print(*(abs(int(v * 10000)) for v in pa))
order = sorted(range(3), key=lambda i: len(groups_b[i]))
a, b = centers_b[order[0]], centers_b[order[-1]]
qb = [a[k] + b[k] for k in (0, 1)]
print(*(abs(int(v * 10000)) for v in qb))

Проверка. Каждый кандидат в каждом кластере проверен суммой евклидовых расстояний. Два лучших кандидата дополнительно сопоставлены с точностью 60 десятичных знаков; минимум единственен. Независимое выделение групп по близким точкам дало те же группы, центры и три аномалии. Варианты TXT и XLSX также дали одинаковый результат.

Ответ: 55295 136872 319184 448643.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF9C8C86.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.