?

Log in

No account? Create an account

Предыдущий пост Поделиться Следующий пост
Техфайл
Веселый
chispa1707
Для желающих лично оценить масштабы сортировочной проблемы, выкладываю техфайл.
Эксель-2007. https://my-files.ru/qwyi0r
Данные позже 1852 года можно и удалить, там все ясно.

Первичная задача: установить число совпадений разных индексов год в год.
Позже можно опробовать и со сдвижкой в 1-5 лет.
Здесь у меня пять вариантов: индексы типа события в разных сочетаниях с индексами места.
"Штаты" - территории учтены до уровня штатов (областей), там, где они указаны.
"Регионы" - территории укрупнены до регионов типа "Западная Сибирь", это тоже имеет свой смысл.
Если бы сортировка шла быстро, я бы обкатал все пять вариантов.
***
Сам я сейчас усиленно поправляю индексы в базе.
***
Размещаю свой рабочий файл здесь: https://my-files.ru/em9hqo
Все получилось, но этот путь ужасно трудоемкий.

  • 1
без разбивки по регионам

ссылка

а вообще формат исходного файла туманный, что как понятно с трудом

Edited at 2018-10-13 20:58 (UTC)

с регионами, колонку с запятыми правда выбрал
ссылка

В случае с индексами типов событий в итоге должна получиться таблица 879 строк на 879 колонок, где на пересечении строк и колонок в ячейках будут цифры отражающие число совпадений.

В случае объединения с регионами таблица будет еще более громоздкой.

Я поступил так:
Сделал сводную таблицу: в строках слева годы, в столбцах наверху индексы, на пересечении - числовое значение. Очищаю до единицы, - важен сам факт, что в этом году индекс есть.
После этого годы не нужны. Имеет значение только то, какие индексы встречаются в одной строке. Строк много, и в итоге я подвел сумму, какой индекс с какими индексами сколько раз встретился в одной строке. Поскольку взял немного индексов, 85, управился за двое суток. Но, понятно, что если брать все 879 индексов, процесс продлится, моими темпами ориентировочно - 5 лет )

Не знаю, зачем Вам эта разреженная матрица, в ней ровно та же информация, что и в "длинном" файле, только работать с ней тяжелее. Одно в другое переводится секунд за 10.
29548 строк на 873 колонки

ссылка


Спасибо!
Размещаю свой рабочий файл здесь: https://my-files.ru/em9hqo
Исходные две колонки на листе "3 столбца".
Я их чуток сократил (до 822-1852 лет) и получил таблицу на листе "Основа"
Совпадения вывожу на лист 822-1852. Здесь можно сделать и со сдвижкой на любое число лет.
Суммирую итог отдельно на нижней строке.
Сумму транспонирую и поочередно вывожу либо на лист СВОДНАЯ, либо (если со сдвигом в год) на лист СВОДНАЯ2
Проценты совпадений считаю на листе Проценты либо на листе Проценты 2
На листе Итог 1 - в форме столбцов результат
Получаю такую форму через объединение данных из таблиц с процентами через СВ1 и СВ2
В итоге получаю листы 01 и 02
Обе они в приемлемой форме на листе Общая. Здесь можно сделать любую выборка для выводов.
Пробные выборки на последних 5 листах


Edited at 2018-10-14 08:07 (UTC)

сводная табличка

https://my-files.ru/zxo3tj

Re: сводная табличка

Спасибо!
Размещаю свой рабочий файл здесь: https://my-files.ru/em9hqo
Исходные две колонки на листе "3 столбца".
Я их чуток сократил (до 822-1852 лет) и получил таблицу на листе "Основа"
Совпадения вывожу на лист 822-1852. Здесь можно сделать и со сдвижкой на любое число лет.
Суммирую итог отдельно на нижней строке.
Сумму транспонирую и поочередно вывожу либо на лист СВОДНАЯ, либо (если со сдвигом в год) на лист СВОДНАЯ2
Проценты совпадений считаю на листе Проценты либо на листе Проценты 2
На листе Итог 1 - в форме столбцов результат
Получаю такую форму через объединение данных из таблиц с процентами через СВ1 и СВ2
В итоге получаю листы 01 и 02
Обе они в приемлемой форме на листе Общая. Здесь можно сделать любую выборка для выводов.
Пробные выборки на последних 5 листах

Edited at 2018-10-14 08:07 (UTC)

здравствуйте!
у меня получилась таблица, как на листе СВОДНАЯ
вот полная таблица с 733 строчками и колонками

для сверки с вашими данными вот часть этой таблицы в вашей сортировке


алгоритм находится здесь

делаю дальше...

Класс! Категорически не понял, как это сделано, однако результат налицо )
Скачать, правда, не сумел )
Сейчас уже пора ставить финальные задачи. Разных алгоритмов у нас уже много, но еще нет представления, как свести все эти промежуточные результаты в одно финальное целое. А уже пора )

это сделано на языке c#, алгоритм преобразуется в обыкновенный exe-файл, обеспечивая максимальную скорость: например, файл 00_База_2018_10_01.xls обрабатывается и преобразуется в таблицу 733 на 733 за 13 секунд на моем простом компьютере

чтобы скачать таблицу, пожалуйста, перейдите по ссылке и нажмите кнопку Download справа


да, нужно уже делать задачу 3
"индексы, на деле, составят несколько групп с высоким процентом совпадений внутри группы и с малым процентом совпадений с индексами из других групп. Число этих групп отразит число разных этапов развития цивилизации."

думаю, переживаю...

Edited at 2018-10-16 08:28 (UTC)

Скачать удалось!
Я заметно исправил базу, добавил пару тысяч индексов, но Экселю будет сложно это все обработать, поэтому обращусь к вам.
Но главное, пора выходить в финал. Мы все к этому готовы. Реально пора.
Тоже думаю, тоже переживаю.

Edited at 2018-10-16 08:41 (UTC)

конечно, обращайтесь в любой момент
я очень люблю ваше дело


// Категорически не понял, как это сделано...

Когда я догадался, что ваши действия с файлом 00 крайняя попытка 2 (Автосохраненный).xlsx: Суммирую итог отдельно на нижней строке. Сумму транспонирую и поочередно вывожу либо на лист СВОДНАЯ, либо (если со сдвигом в год) на лист СВОДНАЯ2 легко объяснимы в теории графов, то получил алгоритм. В нём первичные графы byYears созданы также, как создавался лист Основа, а cуммирование итогов для листа СВОДНАЯ b СВОДНАЯ2 - это объединение первичные графов.

Это самые простые операции в теории графов. В Экселе они очень трудоемки, как вы убедились.

Нашел программу Gephi, очень подходящую для нашего уровня развития.

Файлы типа сводная.xlsx в Gephi импортируются вообще напрямую, как матрица графа. Что получилось в ней, сейчас комментирую к посту https://chispa1707.livejournal.com/3012378.html

Расчет листов Проценты и Проценты2 - это подготовка к кластерному анализу и в Gephi делается хорошо.

посчитал таблицы со сдвигами от 1 до 5 лет
находятся они в папке https://github.com/it4history/reconstruction/tree/master/Excel/EventsIndexing/Tests/out
по два файла на каждый сдвиг: с расширением xlsx полная таблица, а с расширением csv часть в вашей сортировке


например, можно заметить совпадения таблицы со сдвигом в 1 год с вашими данными из листа СВОДНАЯ2
есть и несовпадения, хоть я и ограничился 822-1852 годами




алгоритм гибко разрешает устанавливать сдвиги

в общем, нет предела совершенствованию

Похоже, что Вы умеете делать это быстро.
Вот здесь - https://chispa1707.livejournal.com/3012125.html
Внизу лежит "техфайл для себя". Там несколько групп из двух столбиков.
Прошу Вас проделать это с каждой группой и передать мне.
***
Надеюсь, мы понимаем "сдвиг в данном случае одинаково. Я имею ввиду, что сверяемый индекс в одном году, а индексы. с которыми его сверяют, на 1-5 лет позже.
Интересно... а может, лучше если раньше? Результат будет разный...

буду делать сегодня
***

про "сдвиг"
я понимаю в смысле "раньше", то есть строку сравниваю с индексами предыдущих 1-5 лет
но если посмотреть на скриншот несовпадений вверху, то кажется, что я понимал также, как и вы, в смысле "позже"...
в алгоритме это меняется знаком "минус" на "плюс" вот в этом месте

делаю эксперимент - меняю знак на плюс, что значит в моём понимании "позже"
результат: таблица просто транспонируется вдоль диагонали


через призму теории графов это значит, что направления рёбер изменилось на противоположное
думаю, что сейчас этим можно пренебречь


Также предположил, что несовпадения возникли, потому что вы сравнивали строку не на 1-5 лет, а на 1-5 строки, и посчитал свои таблицы как сравнения на 1-5 строки. Что удивительно, данные мало чем отличаются, особенно для сдвига на 1 год. Более того данные вообще одни и те в вашей сортировке до 40 индексов (больше не захотел проверять).
Значит причина несовпадений где-то в другом.

увеличить качество алгоритма можно через его тренировку
даём на его вход некоторые данные и добиваемся правильный результат

например, пусть имеем три года 1, 2 и 3; в этих годах произошли типы событий


только что алгоритм выдал для сдвига в 1 год результат:
$, a, b, c,
a, 0, 1, 0,
b, 1, 1, 0,
c, 0, 1, 0,
для сдвига в 2 года результат:
$, a, b, c,
a, 1, 1, 0,
b, 0, 0, 0,
c, 1, 1, 0,

по моему мнению алгоритм прав

чем больше придумаем каверзных входных данных, тем более качественный получится алгоритм

Судя по тому. что я вижу. с математикой проблем нет.
Проблема с правильной постановкой вопроса: что именно мы ищем.

Подумал, что, может быть, я слишком тороплюсь.
Если не начинали, то не надо. Если что начали, с удовольствием гляну.
Насколько велик объем, который Ваш подход позволяет вытянуть? В миллионах ячеек?

это я могу отставать, потому что дела семейные имеются;
но время на ваш проект я выделил размером в годы, поэтому сделать можно много неспеша

что касается объема, то я уверен, что мой подход может вытянуть максимельно возможное для современного состояния науки, то есть миллионы и миллиарды ячеек

Отлично!
Пока не спешим. Потребуется сформулировать принципиальные моменты.

  • 1