|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.05.2014, 13:27 | #21 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
если я правильно понял, то метод описанный в атаче из исходного разбиения делает оптимизированное.
на вход метода подается исходный набор кластеров, исходные значения коэфицентов вхождения элементов в кластеры равны либо 0 либо 1. дальше проводится минимизация серднеквадратического отклонения значения элементов от центров кластеров. в результате получаются новые значения коэфициентов вхождения (элементы переходят в другие кластеры). процесс заканчивается когда коэфициенты вхождения перестают меняться (изменения меньше установленного эпсилон). m - это конечно не степень, а порядковый номер кластера. |
26.05.2014, 13:59 | #22 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 26.05.2014 в 14:05. |
|
26.05.2014, 14:16 | #23 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
сори,
m - таки степень, более известная как степень размытия. m >= 1. (m = 1: без размытия) |
26.05.2014, 14:20 | #24 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Опа-на. Так, а что такое размытие? Т.е. это когда кластеры пересекаются? Т.е. элементы одного кластера могут входить и в другой? Я правильно понял?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
26.05.2014, 14:26 | #25 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
да. без размытия, коэфициенты вхождения могут принимать только два значения 0 или 1. с размытием от 0 до 1.
|
26.05.2014, 14:29 | #26 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Тогда не понятен такой вопрос. Там в формуле, есть такая степень 2/m-1. Но на ноль делить нельзя. Чёт тут не вяжется.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 26.05.2014 в 14:33. |
|
26.05.2014, 14:48 | #27 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
ну, там анализ показывает, что при m стремящемся к 1, та формула сходится к 0 или 1.
и для m = 1, нужно пользоваться чем-то типа if (distance(Xi, Cj) == min(distance(Xi, Ck))) Uij = 1; else Uij = 0; кстати, при m = 1 этот метод совпадает с k-means. Последний раз редактировалось f.hump; 26.05.2014 в 15:07. |
04.06.2014, 11:38 | #28 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Промучился с c-means. Не подошел он для решения моей задачки. Нашел другой метод - G-means.
Суть метода такова: Делаем кластеризацию по k-means и вычисляем Гауссово распределение. Если отклонение выше заданного, делим данный кластер пополам и всё повторяем до тех пор, пока отклонения не будут превышать заданный порог. Не стал мучиться с k-means, нашел готовое решение, но в консольном варианте. В консоли, работает нормально. Решил создать класс Clasters. Поместил туда все функции. Все они нормально скомпилились кроме одной: Код:
[C++ Error] Clasters.h(36): E2303 Type name expected [C++ Error] Clasters.h(36): E2139 Declaration missing ; [C++ Fatal Error] CLACTERS.CPP(151): F1004 Internal compiler error at 0x128a12c with base 0x1200000 Библиотеки vector и list подключены. Ума не приложу в чём ошибка.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
06.06.2014, 15:23 | #29 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
как продвигается тема?
очень хочется увидеть картинку после применения выбранного метода. |
20.06.2014, 17:02 | #30 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Дело в том, что все методы кластеризации, очень сильно зависят от первоначальных точек выбора центроидов. Экспериментально я установил, что наилучшее распределение и количество центроидов, напрямую кореллируется с самыми удалёнными точками. Вручную, эти точки задать не сложно, если перед глазами диаграмма. А теперь вопрос: По какой формуле, можно выбрать наиболее удалённые точки? Декартово расстояние не годится, оно не учитывает отношение точек по круговой диаграмме. Может применить полярную систему координат с центром в главном центроиде (отмечен крестиком, вычислен как центр масс всех координат последовательности)? Но, вот как это сделать математически? На рисунке видно, что точка с координатами 5-3, самая дальняя и противоположна всем остальным, в тоже время, она совпадает с двумя другими из кластера 1, которые не являются самыми дальними. Тут есть ещё одна особенность. Другие кластеры, могут находиться внутри других кластеров, как быть в этом случае? Есть какие-нибудь идеи? К стати, заметил несколько особенностей для этой последовательности. 1. Если я беру три кластера, распределение идёт нормально. 2. Если взять 4 кластера, то в одном из них, будет всего одна точка. 3. Если взять 5 кластеров, то один, оказывается пустым. Возможно этот показатель, можно использовать при определении оптимального числа кластеров?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 21.06.2014 в 06:11. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кластеризация картинки.. | goto ∞ | Помощь студентам | 7 | 15.04.2013 21:03 |
Кластеризация | Nelli22 | Visual C++ | 0 | 23.11.2011 13:11 |