Консультация № 178565
22.05.2010, 17:40
45.00 руб.
0 1 0
Здравствуйте. По специальности я не программист, но с нас в дипломе требуют реализацию на языке С++ метода К-средних(описание в приложении). Надеюсь на вашу помощь. Заранее благодарен.

Приложение:
Метод К-средних (кластерный анализ) с учетом дополнений в дипломе:
Имеется множество точек с координатами в плоскости, каждая точка имеет числовое значение. Количество точек, координаты и числовые значения точек задаются. Смысл этого метода в том, что он группирует эти точки вместе, по определенным признакам - евклидово расстояние и "вес" групп (сумма числовых значений точек).
1. Произвольно выбираются К-точек из всего множества, переменная К задается. Эти точки на этом этапе становятся центрами будущих групп.
2. Далее относительно этих центров, определяется евклидово расстояние. Тоесть определяется расстоянием от всех точек до выбранных центров. Точки с кратчайшим расстоянием до центров будут относиться к группе с этой центральной точкой.
3. Далее в сформированных группах суммируются числовые значения точек. Оно не должно превышать заданного числа. Если превышает то эта группа делится на 2 группы, в них также произвольно выбираются 2 точки, как центры новых 2х групп и опять вычисляется сумма числовых значений точек.
4. Вычисляются центроиды групп. Если в группе 3 точки с координатами (x1,y1) (x2,y2) (x3,y3), то координаты центроида вычисляются так:
(x,y) = ( (x1+x2+x3)/n, (y1+y2+y3/n ), n=количество точек, в данном случае 3.
Старый центр группы смещается в этот центроид.
5. Повторяются шаги 2,3,4. Происходит до тех пор, пока координаты центроидов не перестанут изменяться.

Обсуждение

Неизвестный
26.05.2010, 19:31
общий
Gabdrahmanov Albert:
Возможно, Вам стоит попробовать обратиться с этой задачей в Решебник.
Форма ответа