![]() |
|
|
![]()
|
|
| BarmoleY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.5.2012 Репутация: нет Всего: нет |
Добрый день!
Сразу перейду к теме, которая во многом и заставила меня зарегистрироваться на этом форуме. Дано некоторое (достаточно большое) количество точек в 3-мерном пространстве. Кроме основных параметров точки (X,Y,Z), дан параметр T. Не вдаваясь в подробности, скажу, что это - время, в которое была зафиксирована данная точка. Необходимо произвести кластеризацию точек. Проблема заключается в том, что все методы, которые я перепробовал (иерархическая кластеризация, k-means, FCM) кластеризуют точки по вертикали. А мне нужно выделить "слои" по горизонтали. Здесь-то я и зашел в тупик. Боюсь, придется писать алгоритм самому, но дабы не изобретать велосипед, прошу совета - вдруг подобные методы уже существуют? Заранее благодарен всем откликнувшимся. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
что значит по вертикали\горизонтали? я так понял у вас вектор признаков состоит из 4 параметров (x,y,z,t).
Это сообщение отредактировал(а) mrgloom - 4.5.2012, 16:15 |
|||
|
||||
| BarmoleY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.5.2012 Репутация: нет Всего: нет |
Верно. По сути параметр времени (T) на данном этапе не столько интересен. Сначала разобраться бы с кластеризацией в 3-мерном пространстве. Что значит по горизонтали... Сейчас приведу пример. На данный момент практически все алгоритмы выдают следующий результат (два кластера, точки обозначены синим и красным): ![]() Мне бы хотелось, чтобы было так: ![]() На самом деле график трехмерный, просто в этой проекции выглядит более показательно. Это сообщение отредактировал(а) BarmoleY - 4.5.2012, 16:28 |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну алгоритмы скорее всего не хотят вам специально навредить, в пику делая кластеризацию по вертикали, а скорее просто делают это просто правильно.
вроде есть такое понятие как разделяющая плоскость, вот там есть картинки например http://habrahabr.ru/post/105220/ вот вам как то наверно надо наложить ограничение на эту разделяющую плоскость. и еще можно повернуть точки на 90 градусов |
|||
|
||||
| BarmoleY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.5.2012 Репутация: нет Всего: нет |
Поворачивать нельзя, там с особенностями предметной области связано... А вот разделяющие плоскости - это уже ближе! Спасибо за совет, буду разбираться! |
|||
|
||||
| BarmoleY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.5.2012 Репутация: нет Всего: нет |
А на "конвейер" такой алгоритм (с разделяющими плоскостями) не поставишь... Мне нужно программно оработать много таких пространственных "кубов" как тот, что я привел выше. Нужно другое решение...
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 7 Всего: 386 |
Может, дело в неправильной метрике? Алгоритмы кластеризации вычисляют некий набор кластеров, по расстоянию между точками кластера. Так что если поменять метрику и считать, что "длина" по оси Y в несколько раз больше, чем по оси X, то можно откорректировать алгоритм.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| BarmoleY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.5.2012 Репутация: нет Всего: нет |
Спасибо, попробую с метрикой поэкспериментировать. |
|||
|
||||
| BarmoleY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.5.2012 Репутация: нет Всего: нет |
Взято отсюда. Только вот как это работает - я так и не понял. Каким образом задаются эти веса?.. Если кто-то работал с этим, приведите, пожалуйста, примеры. |
|||
|
||||
| Mirkes |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Например так. Пусть важность X=20, Y=100, Z=50, T=1 Тогда в качестве квадрата расстояния вычисляется следующая величина 20(x-xn)^2+100(y-yn)^2+50(z-zn)^2+(t-tn)^2 Через маленькие буквы обозначил координаты точек, через буквы с добавкой n - координаты ядра (центроида) класса. -------------------- Mirkes |
||||
|
|||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |