Ответы пользователя по тегу Алгоритмы
  • Permutation test для 3 samples и более?

    @dmshar
    Тест для выявления различий в трех группах - это так называемый ANOVA-тест, т.е. тест на проверку различий в дисперсиях.
    Соответственно, пермутационный тест в данном случае тоже должен смоделировать этот тест.
    Как это сделать - можете посмотреть вот тут https://math.stackexchange.com/questions/1189063/p...
    Я конечно понимаю, что врят-ли вы когда-либо программировали на R. Но последовательность действий там вполне понятна, а соответственно переложить этот скрипт на Python затруднений вызвать не должно.
    P.S. На всякий случай - ANOVA реализуется в Python с помощью функции f_oneway() пакета scipy.stats
    Ответ написан
    Комментировать
  • Обоснованность бутстрап метода.Почему можно экстраполировать на генеральную совокупность?

    @dmshar
    Что-то немного не сходится. Проведя ресемплинг мы получаем эмпирическую функцию распределения (например) среднего значения. Для этого распределения (а не для распределения исходной выборки) мы можем строить доверительный интервал, т.е. такие пределы, в которых (условно) в 95 случаях из ста попадет среднее нашей выборки.
    Т.е. реальное среднее реальной выборки или матожидание генеральной совокупности вполне может и не попасть в этот доверительный интервал, но вероятность этого меньше 5%. Причем такое заключение мы сделали исключительно на основе имеющихся данных. Если вдруг у нас появятся дополнительные данные из той-же генеральной совокупности, то вполне возможно, что наше заключение придется корректировать.
    Главное понять: статистика - это не об уверенности. Никогда! Статистика это на самом деле о вероятности ошибиться в своей уверенности.
    P.S. Все таки загляните в книгу, которую я вам порекомендовал в другом месте.
    Ответ написан
    8 комментариев
  • В каком направлении решить Алгоритмическую задачу?

    @dmshar
    Мне написать функцию где с помощью метода replace заменяется код или что?

    А что вас смущает? Что это не теоретический вопрос?
    Да, написать. За одно хотят посмотреть стиль написания вами кода, а на примере 10 задач - и общий уровень владения "инструментом".
    Ответ написан
  • Как научить нейросеть здороваться?

    @dmshar
    Хотелось бы уточнить, если позовлите.

    Я новичок в нейронных сетях, как и в машинном обучении в целом. Поэтому хотелось бы получить как можно больше подробностей, спасибо


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

    А поскольку хотелось бы знать, на какой уровень подготовки ориентировать свой краткий ответ, расскажите пожалуйста, что по теме вы уже прочитали, какие книжки (не научную фантастику, а по теме) или с какими видеокурсами вы уже ознакомились, и главное - что конкретно осталось непонятным. Это поможет людям тут немножко сэкономить свое время для более полного удовлетворения вашего запроса.
    Ждем.
    Ответ написан
    Комментировать
  • Кто может объяснить суть задачи Три попарных максимума?

    @dmshar
    Если действительно
    четкого условия нет. Можно только предположить, что x ≤ y ≤ z . Ограничений по равенствам нет.

    то рассуждаем следующим образом:
    X максимум из a и b, Для определенности, возьмем либо a < b либо a=b (раз равенства допускаются).
    Т.е. уже имеем b=Х. Для a должно выполняться условие a<=b.
    Из условий Y=max(a,c), Z=max(b,c) и условия a<=b следует, что с>=b. Тогда с=Y, с=Z.

    Следовательно, условию удовлетворяют только такие пары, у которых либо все три заданных числа X,Y,Z равны между собой, либо X < Y=Z и тогда b=Х, с=Y=Z, a - произвольное число, меньшее либо равное b.

    Алгоритм свелся к тому, что вы проверяете, выполняются-ли указанные условия и если одно из них выполняется, непосредственно получаете свои а,b и с без всякого подбора.
    Ответ написан
    1 комментарий
  • Как написать алгоритм по определению шансов абитуриента поступить на специальность?

    @dmshar
    Так как вы написали - понять вообще ничего нельзя. Если хотите критики алгоритма - до дайте алгоритм, а не какой-то отрывочный набор слов.

    По первому вопросу. Во-первых, причем тут обход графа? Каким он боком к этой задаче? Во-вторых, причем тут рекурсия? В-третьих - так информация о "первом абитуриенте в списке" или "топ-1" (т.е. как минимум втором?). Что значит "выбранная специальность" - откуда она взялась? "выходим из рекурсии" - и что при этом? Каков результат "захода в рекурсию"? "начинаем алгоритм с начала" - это как? Почему при "копии" надо выходить из рекурсии? В общем - набор каких-то несвязанных обрывков фраз, алгоритмом который назвать невозможно. А значит, и критиковать нечего.
    По второму вопросу. Как может быть корректна формула, если ее коэффициенты (да и сама структура) взяты из головы и ничем не подкреплены? Что такое "тип документа с отрицательным весовым коэффициентом"?? Справка о судимости, что-ли? Но даже если вы "придумали" формулу, какое она имеет отношение к реальным шансам человека?

    Хотите анализировать (или что-бы вам помогли анализировать) ваши алгоритмы - делайте это способом, принятым в сообществе специалистов по ИТ, а не бабушек на скамейке у ворот. Но для этого надо разумеется, этому предварительно обучиться.

    P.S. Кстати, итерация и рекурсия - это РАЗНЫЕ формы реализации алгоритмов. А то у вас в заглавии одно, в вопросе - другое.
    Ответ написан
  • Как максимизировать сумму элементов выбираемых из списка?

    @dmshar
    А есть-ли ограничения на количество элементов в списке? Если есть - я бы сделал так: Построил бы все комбинации из допустимого количества элементов, просчитав при этом их суммы. Потом бы отсортировал эти объекты по спаданию суммы, а потом начиная с наибольшей суммы проверял-бы удовлетворяется-ли условие по К. (это очень просто). Как только условие удовлетворено - максимально возможная сумма найдена.

    Но если вдруг указанного ограничения нет - то увы, возвращаемся опять к NP-сложной задаче.
    Ответ написан
  • Как найти путь в ориентированном графе?

    @dmshar
    1. Ответ на ваш вопрос - "Можно".
    2. Предвидя ваш следующий вопрос - " а как это можно сделать" - отвечу сразу, Не знаю, какой путь вы там решили искать (вы даже не удосужились нам об этом сообщить - а зачем, все же должны бегом побежать догадываться, какую там задачу вам задали на дом и вы не осилили, - ну да ладно) - но начните поиск путей в ориентированном графе с алгоритма Дейсктры. 99% вопросов отпадут (если осилите, конечно). За остальными непонятками - возвращайтесь сюда, попробуем помочь.
    Ответ написан
    Комментировать
  • Random как сгенерировать случайные числа но с определенной вероятностью выпадения?

    @dmshar
    Эта элементарная задача называется "генерирование дискретных случайных величин с заданным законом распределения". Решается классическим образом.
    Сначала разбиваем наш диапазон от 1 до 100 на следующие интервалы:
    1-35,36-60,61-85,86-95,96-100.
    Затем генерируем число, равномерно распределенное в диапазоне от 1 до 100. Номер интервала, в который это число попадает дает ваши генерируемые цифры - от 1 до 5, причем распределены они в точности по вашей таблице распределения.
    Ответ написан
    11 комментариев
  • Как реализовать распределение вероятностей в зависимости от значений?

    @dmshar
    Если считать, что в формулировке вопроса присутствует ошибка (см. комментарий выше), то естественно напрашивающийся ответ следующий:

    1. Считаем сумму всех элементов. Получаем некое S.
    2. Для каждого элемента вашего массива s[i] считаем p[i]=s[i]/S.
    (3. Если в массиве присутствуют одинаковые элементы, их значения p[] складываем.- Пункт связан с неполной формулировкой задания. Нужен он или нет - разбирайтесь сами.)

    Ясно, что сумма всех p[i] равна 1.
    Ясно, что значение p[i] прямо пропорционально значению s[i].
    Ответ написан
  • Как определить коэффициент влияния погоды?

    @dmshar
    Во-первых. "Влияние" одного параметра на другой может быть оценен с помощью коэффициента корреляции. В данном случае - скорее всего - коэффициента корреляции Присона.
    Во-вторых, "влияние" одного параметра на другой может быть выявлено в виде регрессионной модели.
    Коэффициент корреляции просто покзывает, можно ли ПРЕДПОЛОЖИТЬ, что параметры между собой связаны. Регрессионный подход пытается строить модели. Но что-бы эта модель была адекватной, т.е чтобы с ее помощью можно было действительно что-то предугадывать, на данные должны быль наложены более серьезные ограничения. Выполняются-ли они на ваших данных - надо проверять.
    Другое дело, что в реалии все намного сложнее. Данные у вас (предположим) объем продаж в зависимости от реальной температуры в этот день. А строить модели вы собираетесь по прогнозу. И это вовсе не одно и тоже. И - если подходить серьезно -гораздо сложнее прямой задачи.
    Ну и кроме того, не забывайте, что ваши данные скорее всего имеют еще и сезонную составляющую, причем слово "сезонный" тут может иметь значение и 7 дней, и 30 дней и 365 дней. И если все делать "по взрослому" - то тут уже начинают работать модели временнЫх рядов.
    Ответ написан
    Комментировать
  • Как подсчитать количество операций при работе алгоритма сортировки?

    @dmshar
    Открою вам маленький секрет, который вам должны были рассказать на первой же лекции по теории алгоритмов. Если вы возьмете тот-же массив, перетасуете его и еще раз отсортируете, то велика вероятность того, что получите ответ, отличный от 28.
    И вам наверняка говорили, что O(n) - это вовсе не время и даже не количество операций, которые надо выполнить. На самом деле О - нотация показывает как изменяется количество выполнимых операций при соответствующем увеличении входных данных.
    Соответственно O(n) говорит, что с ростом объема количество операций растет (примерно) линейно, а O(n^2) - растет (примерно) квадратично.
    Если хотите удостовериться - надо проводить такой эксперимент. Берете набор данных на Х элементов, 100000 раз его тасуете и 100000 проводите сортировку. Получаете некоторую усредненное число повторений A. Потом берете набор данных на 2Х элементов и повторяете процедуру. Получаете усредненное количество операций В. И смотрите, в каком отношении находятся В и А. Вот это и есть грубая оценка О(.).
    Ответ написан
    9 комментариев
  • Задача: Как из ограниченного количества чисел найти те, из которых можно составить вводимое число?

    @dmshar
    Полный перебор. С возможным окончанем иттерации при превышении текущей суммы заданного числа.
    Ответ написан
    8 комментариев
  • Алгоритмы парадигмы и т.д. Как учить?

    @dmshar
    Блин, ну почему "важно знать не сам язык программирования, а важно знать алгоритмы, парадигмы и так далее. " сразу трактуется как "НЕ надо знать язык программирования....". Ну где, кто и когда такое написал????
    Кстати, тут в недавней теме речь шла не о том даже "знать-не знать" язык программирования, а о том, "запоминать или не запоминать".
    Так вот, к вопросу - язык знать необходимо, но можно не помнить точный синтаксис и особенности. А вот "парадигмы" надо понимать. И по очереди их -языки и парадигмы - учить никак не получиться (вернее - совершенно бессмысленно), они слиты в единое целое.
    А с классическими алгоритмами вообще "странная" вещь. - вы их можете никогда в своей жизни не употребить, но учить их - необходимо. Если хотите конечно быть Developer а не Coder.
    Ответ написан
    Комментировать
  • Нахождение ближайшего соседа с более чем 1 параметром?

    @dmshar
    Вы специально всех пытаетесь запутать?
    Во-первых, алгоритм Дейкстры никак НЕ "алгоритм нахождения ближайшего соседа". Это алгоритм нахождения кратчайшего пути. Что вовсе не одно и тоже. Отсюда первый вопрос - так что-же на самом деле вы там ищете?

    Во-вторых, первый пример ну никак не согласуется с приведенной картинкой. Даже по одному параметру. Что вы этим хотели сказать/показать?

    В-третьих. Наличие нескольких параметров у веток графа приводит к двум различным постановкам задачи поиска кратчайшего пути (относительно вашей задачи сомнения - см. выше) .
    Первая - это поиск отдельных кратчайших путей по каждому из показателей (пример - поиск ближайшего пути из города А в город Б по цене, расстоянию, времени в пути - ясно что это РАЗНЫЕ задачи).
    Вторая постановка - если вы как-то обобщаете свои три (или сколько-там) параметров в один (ну, например, используя метру расстояния Эвклида, манхетенскую, Хэмминга, Махаланобиса или какую другую) и уже по этой обобщенной мере ищите алгоритмом Дейкстры минимальный путь. Все зависит от постановки задачи.
    Ответ написан
  • Имитационное моделирование или гейм-движок?

    @dmshar
    А гейм-движок по сути это и есть имитационное моделирование. Только разукрашенное разными картинками и с существенно заниженными требованиями к точности.
    Ответ написан
  • Как визуализировать данные, состоящие из координаты и величины?

    @dmshar
    Читал-читал, но так до конца и не понял, что-же вам надо. Вот такие двумерные графики, где цвет или третья координата зависят от значения параметра? Или что-то другое? И да, все эти графики строятся именно по заданным значениям в точках, разумеется.
    5ea59a80bd5a4535962681.png
    Ответ написан
    7 комментариев
  • Как перемножить значения n таблиц, а потом сложить получившиеся значения n раз?

    @dmshar
    вторая строка в коде
    purchase_transactions=purchase_transactions+sale_transactions[i][4] * sale_transactions[i][5]

    Ну и последняя строчка, конечно, без отсупов.
    А уж сколько она насчитает - столько насчитает.
    Ответ написан
    Комментировать
  • Возможна ли прокачка алгоритмов без хорошего знания синтаксиса?

    @dmshar
    Представьте себе вам и вашей команде надо сделать какую-то работу, ну предположим - построить стену. Вы начальник. У вас в голове должен быть алгоритм решения этой задачи - изготовить раствор, заместить раствор, поднести кирпичи, уложить слой раствора, уложить слой кирпичей, если высота стены меньше заданной - повторять описанные выше действия. Разложив задачу на шаги и увязав их воедино вы получили алгоритм решения, который передаете исполнителем для выполнения.
    Аналогично в программировании. Вам ставят задачу, первым делом вы должны ее разбить на некоторые более простые действия и увязать их между собой. Теперь вы можете этот алгоритм описать - на русском языке, на английском, на китайском.... А можете на языке программирования С++ или Java Script. Вот тут алгоритмы сортировки вообще языком танца демонстрируют. Прикольненько так и вполне понятненько :-).
    https://habr.com/ru/post/117200/
    Конечно, когда мы говорим о программирования некие вещи надо знать - что такое память компьютера, как там данные можно сохранить и как их оттуда извлечь, и пр.
    Но цикл - это понятие не из программирования, но в разных языках оно просто реализовано немножко по разному. И сравнение и выбор - тоже проистекают из обычной жизни и только специальным образом воплощаются в языках.
    Так что язык, который вы используете - это только средство описания алгоритмов, а никак не необходимый инструмент.
    Ответ написан
    Комментировать