Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2013, 12:05   #11
Ягодка
Пользователь
 
Аватар для Ягодка
 
Регистрация: 11.02.2013
Сообщений: 32
По умолчанию

alexander13, корня не должно быть точно, формула ошибки изображена на картинке1.jpg
И что-то она совсем не похожа на то, что пытаюсь вычислить я...
Главная проблема, чтобы массивы m1, m2 пересчитывались и их новые значения использовались в вычислении массивов Dm1, Dm2, In1, In2... и Так до тех пор, пока не станет E<E1/1000.
Входные данные
Массив Kol (SG 1): 13, 3, 4, 3, 1, 1, 9, 1, 2, 5
Gar (SG 2): 10, 4, 2, 1, ,1 3, 2, 2, 2
Rem (SG 3): 1,5; 2,3; 0,9; 0; 0; 0; 0; 0; 0; 5
Ягодка вне форума Ответить с цитированием
Старый 17.02.2013, 12:15   #12
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Если так, то Вы неправильно вычисляете отклонение.
Во-первых, это уже не разность квадратов, а квадрат разности. Во-вторых, квадрат разности не тех величин, что у Вас используются.. И в-третьих, там две суммы, у Вас же вычисляется значение с участием только последних двух эл-тов массивов.

Upd.
В общем, вечером напишу точное решение.
Μολὼν λαβέ

Последний раз редактировалось alexander13; 17.02.2013 в 12:23.
alexander13 вне форума Ответить с цитированием
Старый 17.02.2013, 12:31   #13
Ягодка
Пользователь
 
Аватар для Ягодка
 
Регистрация: 11.02.2013
Сообщений: 32
По умолчанию

k-means.doc Текст задания
Ягодка вне форума Ответить с цитированием
Старый 17.02.2013, 19:03   #14
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Ну вот смотрите..
Во-первых, насчет ошибки. Тут я Вам немного наврал, запутался в обозначениях Ваших.. вот та норма (где разность) - это евклидово расстояние, оно у Вас как раз вычисляется в Dm, а вот в конечном значении отклонения как раз должна быть сумма, но не так как у Вас было, а так:
Код:
...
E1:=E1+sqr(Dm1[i])+sqr(Dm2[i]); {ошибка Е начальная}
...
E:=0;
for i:=1 to 10 do begin
Dm1[i]:=sqrt(sqr((Kol[i]-m1[1]))+sqr((Gar[i]-m1[2]))+sqr((Rem[i]-m1[3]))); {подсчет Евклидова расстояния между кластерами}
Dm2[i]:=sqrt(sqr((Kol[i]-m2[1]))+sqr((Gar[i]-m2[2]))+sqr((Rem[i]-m2[3]))); {подсчет Евклидова расстояния между кластерами}
E:=E+sqr(Dm1[i])+sqr(Dm2[i]); {ошибка Е конечная}
...
Дальше, у Вас на втором шаге происходит стабилизация кластерных центров. Соответственно, ошибка не уменьшается. Но, как видно из Вашего задания,
Цитата:
И так далее, пока самая первая ошибка Е не станет меньше в 1000 раз.
До тех пор, пока (m1-m1’) и (m2-m2’) не станет равно 0.
Т.е. у Вас как раз второй случай, когда (m1-m1’) и (m2-m2’) = 0 и надо выходить из цикла.
Хотя меня еще смущает фраза "самая первая ошибка".. что значит самая первая?
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 17.02.2013, 19:57   #15
Ягодка
Пользователь
 
Аватар для Ягодка
 
Регистрация: 11.02.2013
Сообщений: 32
По умолчанию

Прошу прощения, в документе последняя строчка - До тех пор, пока (m1-m1’) и (m2-m2’) не станет равно 0 - это неправильно =( Это старое задание, я его обновила, а эту строчку забыла стереть
Ягодка вне форума Ответить с цитированием
Старый 17.02.2013, 20:01   #16
Ягодка
Пользователь
 
Аватар для Ягодка
 
Регистрация: 11.02.2013
Сообщений: 32
По умолчанию

Самая первая ошибка - эта та, которую мы получили, используя самые первые значения центроидов, т.е. те, которые находятся в SG4 и SG5. Мы их вычисляли через максимумы и минимумы массивов Kol, Gar и Rem.
Ягодка вне форума Ответить с цитированием
Старый 17.02.2013, 20:05   #17
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Ягодка Посмотреть сообщение
Это старое задание
Точно? =) А было бы логично..
На самом деле, я даже на бумаге посчитал.. По заданию, без программы. И также у меня центроиды после второго шага переставали меняться.
Если, например, изначально выбирать их другим способом (рандомом или средним), то получалось больше шагов и отклонение менялось.
Так что, возможно, следует просто ввести счетчик и если ничего не меняется, то через определенное число итераций выходить?

Кстати, если модифицировать алгоритм до c-means, то отклонение еще больше уменьшается, но все равно не в 1000 раз..
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 17.02.2013, 20:18   #18
Ягодка
Пользователь
 
Аватар для Ягодка
 
Регистрация: 11.02.2013
Сообщений: 32
По умолчанию

Я тоже думаю, что было бы логично, поэтому сначала так и рассчитывала всё, но преподаватель сказал, что неправильно, и что считать надо до тех пор, пока первоначальная ошибка не станет меньше в 1000 раз
Ягодка вне форума Ответить с цитированием
Старый 17.02.2013, 20:19   #19
Ягодка
Пользователь
 
Аватар для Ягодка
 
Регистрация: 11.02.2013
Сообщений: 32
По умолчанию

Счётчик я тоже вводила - не прокатило, потребовали вот так... А рандомом выбирать начальные координаты m1, m2 нельзя - они должны как бы отражать "хорошее" и "плохое"
Ягодка вне форума Ответить с цитированием
Старый 17.02.2013, 20:22   #20
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Ягодка Посмотреть сообщение
Я тоже думаю, что было бы логично, поэтому сначала так и рассчитывала всё, но преподаватель сказал, что неправильно, и что считать надо до тех пор, пока первоначальная ошибка не станет меньше в 1000 раз
Но ведь если центроиды стабилизируются, то расстояние не будет меняться. У меня даже с c-means только в 30 раз уменьшается ошибка... Но никак не в 1000.
А преподаватель не сказал, где ошибка?
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл repeat until ac1d_buRn Помощь студентам 4 06.10.2009 21:55
Как правильно построить цикл для выборки? Tanuska___:) БД в Delphi 1 12.01.2009 14:50
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34