1

Тема: Кластерный анализ. VBA Excel

Доброго времени суток, умным людям!
Дано:
А(нижний предел) = 0; В(верхний предел) = 200; N(количество точек) = 100. Генерируем Х и У функцией СЛУЧМЕЖДУ(А;В) протягиваем формулу, пока ни получится N точек, то бишь 100. Копируем только значения, получаем набор случайных пар (Х;У)
Задача:
С помощью VBA произвести кластеризацию объектов(точек с координатами(Х;У)). Правила останова: 1) 7 или менее кластеров; 2) более одного объекта в каждом кластере.
Решение:
Изначально количество кластеров = количеству точек, то есть каждая точка в своем кластере. Находим "центры масс" кластеров (Mi=((сумма Хi )/Nx; (сумма Уi)/Ny) на данном этапе это - координаты точек, для каждого кластера. Теперь нужно найти расстояния между всеми центрами масс, то есть от каждой точки до всех остальных.R=(Xi-X(i+1))^2+(Yi-Y(i+1))^2. Выбрать среди них наименьшее и соединить эти два кластера в один. Опять найти центры масс для каждого кластера, опять найти все расстояния между центрами масс, определить наименьшее, объединить два соответствующих кластера в один. И так до тех пор пока количество кластеров не буден меньше либо равно семи, и при этом в каждом кластере будет более одного объекта. В итоге должна получиться точечная диаграмма на которой точки принадлежащие к одному кластеру окрашены в какой-нибудь свой цвет. В добавок ко всему, весь процесс должен быть каким то образом заметен, но это пока не так важно. Мне б для начала с самой задачей разобраться. Я вообще не очень то с VBA знакома, но в паскале программки писать приходилось, и даже немного получалось. Языки, как я поняла, родные. Но я даже не знаю с чего начать. Помогите, кто чем может.   Важен любой совет.
sad

Post's attachments

Кластеризация.xlsx 18.46 Кб, 11 скачиваний с 2015-10-17 

You don't have the permssions to download the attachments of this post.

2

Re: Кластерный анализ. VBA Excel

Новогодние скидки на прогоны!Кластерный анализ. VBA Excel РЕКЛАМА В СЕТИ ИНТЕРНЕТ  Размещение рекламы в ИНТЕРНЕТЕ - двигатель торговли, торговля двигатель прогресса! И так далее по цепочке, в итоге можно прийти к очень неожиданным и крайне интересным результатам.  внешняя ссылка Заказать ПРОГОН!?

#Сайт #Продвижение #SEO #Сделатьсайт #wb-master.ru

3

Re: Кластерный анализ. VBA Excel

stylecolor пишет:

Доброго времени суток, умным людям!
Дано:
А(нижний предел) = 0; В(верхний предел) = 200; N(количество точек) = 100. Генерируем Х и У функцией СЛУЧМЕЖДУ(А;В) протягиваем формулу, пока ни получится N точек, то бишь 100. Копируем только значения, получаем набор случайных пар (Х;У)
Задача:
С помощью VBA произвести кластеризацию объектов(точек с координатами(Х;У)). Правила останова: 1) 7 или менее кластеров; 2) более одного объекта в каждом кластере.
Решение:
Изначально количество кластеров = количеству точек, то есть каждая точка в своем кластере. Находим "центры масс" кластеров (Mi=((сумма Хi )/Nx; (сумма Уi)/Ny) на данном этапе это - координаты точек, для каждого кластера. Теперь нужно найти расстояния между всеми центрами масс, то есть от каждой точки до всех остальных.R=(Xi-X(i+1))^2+(Yi-Y(i+1))^2. Выбрать среди них наименьшее и соединить эти два кластера в один. Опять найти центры масс для каждого кластера, опять найти все расстояния между центрами масс, определить наименьшее, объединить два соответствующих кластера в один. И так до тех пор пока количество кластеров не буден меньше либо равно семи, и при этом в каждом кластере будет более одного объекта. В итоге должна получиться точечная диаграмма на которой точки принадлежащие к одному кластеру окрашены в какой-нибудь свой цвет. В добавок ко всему, весь процесс должен быть каким то образом заметен, но это пока не так важно. Мне б для начала с самой задачей разобраться. Я вообще не очень то с VBA знакома, но в паскале программки писать приходилось, и даже немного получалось. Языки, как я поняла, родные. Но я даже не знаю с чего начать. Помогите, кто чем может.   Важен любой совет.
sad

Не совсем понял, что есть кластеризация - знаком только с понятием кластера в жёстких дисках. Чему равно Nx/Ny? Какое в итоге берётся-таки кол-во точек?
Начать нужно явно с внесения значений в переменные. И скорее всего - придётся массивы использовать. Может даже лучше двумерные чтобы был массив vArray(1;1) = Xi, vArray(1,2) = Yi

Option Base 1 'можно не использовать, но так лично мне удобнее (первое значение массива будет не в 0-м значении, а в 1-м. Если не использовать функции разделения строки на значения массива - то получается отлично)
Sub Klaster()
Dim oWB as Excel.Workbook
Dim oList as Excel.Worksheet
Dim xArray(100) as Variant
Dim yArray(100) as Variant
Dim sValue, i as Integer
Set oWB = ActiveWorkbook
Set oList = oWB.ActiveSheet
'можно иначе брать значения из ячеек, это просто первое что в голову пришло
For i = 1 To 100
'Это при условии что значения Х - в столбце "А", а У - в стобце "Б"
xArray(i) = oList.Range("A" & i)
yArray(i) = oList.Range("B" & i)
Next i
End Sub

В итоге у нас получается два массива, содержащих значения столбцов А и Б. Дальше пока не понял

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871