Кластерный анализ в Excel

Обсуждение вопросов по использованию Excel, Access и других программ оптимизирующих работу закупщика
Аватар пользователя
Фишер Андрей
Профессионал
Профессионал
Сообщений: 256
Зарегистрирован: 16 янв 2010 03:16
Имя: Андрей
Фамилия: Фишер
Должность: Директор
Откуда: Владивосток

Кластерный анализ в Excel

Сообщение Фишер Андрей » 29 дек 2010 11:08

Коллеги, предлагаю опробовать утилиту для кластерного анализа Inventor: кластерный анализ.

На входе необходим массив записей из двух полей: номер документа и номенклатура. Задаем коэффициент кластеризации и минимальное количество продаж.

На выходе приблизительно такой результат:

Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Inventor - надстройка Excel для закупщика
http://zakup.vl.ru/64-inventor.html

Реклама
Аватар пользователя
Фишер Андрей
Профессионал
Профессионал
Сообщений: 256
Зарегистрирован: 16 янв 2010 03:16
Имя: Андрей
Фамилия: Фишер
Должность: Директор
Откуда: Владивосток

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

Сообщение Фишер Андрей » 08 янв 2011 17:09

Коллеги, в утилите Inventor: кластерный анализ обнаружена маленькая, но серьезная ошибка.
Выкладываю обновленную версию без ошибки. Надеюсь, теперь все будет работать как положено )
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Inventor - надстройка Excel для закупщика
http://zakup.vl.ru/64-inventor.html

Аватар пользователя
sf13

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

Сообщение sf13 » 10 янв 2011 12:33

Будут вопросы - пишите на форуме

Андрей, добрый день.
1. Из каких соображений (по каким критериям) формируется каждый из трёх уровней кластеризации?
2. Было бы очень полезно иметь в расчётном модуле индикатор прогресса вычислений или хотя бы предварительную оценку времени расчёта.

Аватар пользователя
Фишер Андрей
Профессионал
Профессионал
Сообщений: 256
Зарегистрирован: 16 янв 2010 03:16
Имя: Андрей
Фамилия: Фишер
Должность: Директор
Откуда: Владивосток

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

Сообщение Фишер Андрей » 10 янв 2011 12:45

sf13 писал(а):
Будут вопросы - пишите на форуме

Андрей, добрый день.
1. Из каких соображений (по каким критериям) формируется каждый из трёх уровней кластеризации?
2. Было бы очень полезно иметь в расчётном модуле индикатор прогресса вычислений или хотя бы предварительную оценку времени расчёта.

Сергей, приветствую.
Спасибо за интерес.
1.Уровней кластеризации может быть и больше. Этот анализ вышел из анализа совместных продаж. На каждом уровне кластеризации объединяются товары, продающиеся совместно. Методику разработал совместно с Валерой Разгуляевым.
Подробно она описана тут (необходима регистрация, не сочтите за трудность, но проще так, чем переносить большой объем обсуждения сюда).
2. Индикатор прогресса есть, но он не работает из-за высокой нагрузки (просто не показывается и все). Приблизительное время анализа приводится в обсуждении по ссылке, которую я дал в первом пункте.
Inventor - надстройка Excel для закупщика
http://zakup.vl.ru/64-inventor.html

Аватар пользователя
sf13

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

Сообщение sf13 » 10 янв 2011 13:00

Андрей, спасибо,
на Ваш форум отправился, едва дописав предыдущее сообщение и подумав, что там обсуждение этого вопроса быть обязано.
Индикатор прогресса (время и % выполнения) я всё же вывел бы через минуту (приостановив вычисления) и оставил бы сообщение на экране до следующего аналогичного сообщения, а затем повторял бы это после выполнения каждых скольки-то (2-ух, 5-ти или 10-ти) процентов выполнения.
Нерентабельно запускать ПК даже и на ночь, не будучи уверенным, что утром не придётся расчёт принудительно прервать с нулевым результатом.

Аватар пользователя
Фишер Андрей
Профессионал
Профессионал
Сообщений: 256
Зарегистрирован: 16 янв 2010 03:16
Имя: Андрей
Фамилия: Фишер
Должность: Директор
Откуда: Владивосток

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

Сообщение Фишер Андрей » 10 янв 2011 13:08

sf13 писал(а):Индикатор прогресса (время и % выполнения) я всё же вывел бы через минуту (приостановив вычисления) и оставил бы сообщение на экране до следующего аналогичного сообщения, а затем повторял бы это после выполнения каждых скольки-то (2-ух, 5-ти или 10-ти) процентов выполнения.

Не подумал именно над таким решением. Спасибо за идею.
Сегодня в программе есть таймер, т.е. единожды сделав такой анализ вы увидите затраченное время, а учитывая количество строк данных можно прикинуть время анализа для массива другого размера.
Inventor - надстройка Excel для закупщика
http://zakup.vl.ru/64-inventor.html

Аватар пользователя
KaPrAL
Гуру
Гуру
Сообщений: 682
Зарегистрирован: 12 май 2009 03:00
Имя: Александр
Фамилия: Пруцков
Должность: Критик
Откуда: Москва

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

Сообщение KaPrAL » 10 янв 2011 16:30

sf13 писал(а):Индикатор прогресса (время и % выполнения) я всё же вывел бы через минуту (приостановив вычисления) и оставил бы сообщение на экране до следующего аналогичного сообщения, а затем повторял бы это после выполнения каждых скольки-то (2-ух, 5-ти или 10-ти) процентов выполнения.
Нерентабельно запускать ПК даже и на ночь, не будучи уверенным, что утром не придётся расчёт принудительно прервать с нулевым результатом.

Ключевая команда: "DoEvents" :mi_ga_et:

Аватар пользователя
sf13

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

Сообщение sf13 » 10 янв 2011 22:47

KaPrAL писал(а):
sf13 писал(а):Индикатор прогресса (время и % выполнения) я всё же вывел бы через минуту (приостановив вычисления) и оставил бы сообщение на экране до следующего аналогичного сообщения, а затем повторял бы это после выполнения каждых скольки-то (2-ух, 5-ти или 10-ти) процентов выполнения.
Нерентабельно запускать ПК даже и на ночь, не будучи уверенным, что утром не придётся расчёт принудительно прервать с нулевым результатом.

Ключевая команда: "DoEvents" :mi_ga_et:


A если, когда нужно показать Таймер ...

Application.ScreenUpdating=True
Показываем Таймер (прямо в листе)
Показываем долю отработанных этапов (циклов, стадий, позиций, элементов...) (там же в листе)
Пишем ("Считать Вам и считать до следующего Нового Года ...") (там же в листе)
Application.ScreenUpdating=False

И экран замирает до следующего "показа"...

Честно, говоря, очень приятно, когда расчёт хоть изредка "пошевеливается".
Мало того, в общем случае, если возможно вывести результат этапа вычислений (таблица, помещающаяся на экране, диаграмма, и т.п.), пользователь либо будет это с удовольствием изучать до следующей картинки, либо удовлетворится корректностью промежуточного результата и успокоится, либо, наоборот,остановит расчёт, если промежуточный результат некорректен или видно, что параметры расчёта следует задать по-другому.

Аватар пользователя
Фишер Андрей
Профессионал
Профессионал
Сообщений: 256
Зарегистрирован: 16 янв 2010 03:16
Имя: Андрей
Фамилия: Фишер
Должность: Директор
Откуда: Владивосток

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

Сообщение Фишер Андрей » 11 янв 2011 02:38

KaPrAL писал(а):Ключевая команда: "DoEvents" :mi_ga_et:

Да, Саша, в индикаторе выполнения я использую эту команду, но Excel, видно как-то внутренне оценив масштаб задачи, уходит в глухую оборону (при анализе большого массива) и не отображает ничего (даже статусную строку) до окончания анализа. Просто белый экран и все. Наверное таким образом Excel оптимизирует производительность.

sf13 писал(а):A если, когда нужно показать Таймер ...

Application.ScreenUpdating=True
Показываем Таймер (прямо в листе)
Показываем долю отработанных этапов (циклов, стадий, позиций, элементов...) (там же в листе)
Пишем ("Считать Вам и считать до следующего Нового Года ...") (там же в листе)
Application.ScreenUpdating=False

И экран замирает до следующего "показа"...

Честно, говоря, очень приятно, когда расчёт хоть изредка "пошевеливается".
Мало того, в общем случае, если возможно вывести результат этапа вычислений (таблица, помещающаяся на экране, диаграмма, и т.п.), пользователь либо будет это с удовольствием изучать до следующей картинки, либо удовлетворится корректностью промежуточного результата и успокоится, либо, наоборот,остановит расчёт, если промежуточный результат некорректен или видно, что параметры расчёта следует задать по-другому.

Да, Сергей, согласен, что очень полезно видеть, что программа работает правильно и что есть продвижение к конечной цели.
Я пробовал ScreenUpdating вкл/выкл, но Excel не успевает очухаться и экран так и остается белым. Кроме того, пытался выводить инфу в строку состояния, но даже и ее не видно! =)
Думаю здесь нужно временно остановить все процессы после вывода инфы о прогрессе, например, на секунду:

Код: Выбрать все

вывод инфы о прогессе вычисления
With Application
   .ScreenUpdating=True
   .Wait (Now + TimeValue("0:00:01"))
   .ScreenUpdating=False
End With

вот только каждый раз теряем секунду, а это сложится в часы! Да и не это главное. Главное то, что после этой секунды экран опять станет белым и на нем ничего не будет видно. Сидеть караулить момент вывода инфы о прогрессе никто не будет. Можно как вариант отправлять инфу о прогрессе на электронную почту или в текстовый файл :)
Короче есть над чем поразмыслить.
Спасибо за предложения.
Inventor - надстройка Excel для закупщика
http://zakup.vl.ru/64-inventor.html

Аватар пользователя
KaPrAL
Гуру
Гуру
Сообщений: 682
Зарегистрирован: 12 май 2009 03:00
Имя: Александр
Фамилия: Пруцков
Должность: Критик
Откуда: Москва

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

Сообщение KaPrAL » 11 янв 2011 12:30

Фишер Андрей писал(а):Excel, видно как-то внутренне оценив масштаб задачи, уходит в глухую оборону (при анализе большого массива) и не отображает ничего (даже статусную строку) до окончания анализа. Просто белый экран и все. Наверное таким образом Excel оптимизирует производительность.
.....
Я пробовал ScreenUpdating вкл/выкл, но Excel не успевает очухаться и экран так и остается белым. Кроме того, пытался выводить инфу в строку состояния, но даже и ее не видно! =)

Excel- это зло. Глючный тяжеловесный недешевый продукт, разработчики которого даже не удосужились дать пользователю возможность масштабировать формочки в макросах. Бесплатная версия Visual Studio избавит от лишней головной боли :zvez_ochki:


Вернуться в «Программы для закупщиков»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: CommonCrawl [Bot] и 0 гостей