Data Science: Алгоритмы и Структуры данных
الذهاب إلى القناة على Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata
إظهار المزيد7 623
المشتركون
-224 ساعات
-117 أيام
-4930 أيام
أرشيف المشاركات
Хочешь заговорить на английском, но не с кем практиковаться?
Появилась ИИ-девушка, с которой можно общаться голосовыми на любые темы, как с носителем. Она слушает твою речь, подробно исправляет ошибки и помогает говорить увереннее. Попробовать можно бесплатно.
🇬🇧 Английский: @ChattyEnglishBot
🇩🇪 Немецкий: @ChattyGermanBot
🇪🇸 Испанский: @ChattySpanishBot
🇫🇷 Французский: @ChattyFrenchBot
🇮🇹 Итальянский: @ChattyItalianBot
🇵🇹 Португальский: @ChattyPortugueseBot
🇨🇳 Китайский: @ChattyChineseBot
🇯🇵 Японский: @ChattyJapaneseBot
🇰🇷 Корейский: @ChattyKoreanBot
🇸🇦 Арабский: @ChattyArabicBot
🇹🇷 Турецкий: @ChattyTurkishBot
🇷🇺 Русский: @ChattyRussianBot
🇵🇱 Польский: @ChattyPolandBot
Шаги решения любой задачи
Нашел статью недавно и понимаю теперь где я косячил в самом начале.
Никогда не пытайтесь сразу решать задачу оптимизированно. Или, что еще хуже, тупо не разбираясь в самой проблеме стараться ее зазубрить. Поверьте - это не выход и так вы ничему не научитесь.
В статье описываются шаги того, что надо сделать приступая к любой проблеме:
1. Понять саму проблему
2. Выбрать общее направление по решению проблемы.
3. Подумайте что вы можете сделать (используя ваш предыдущий опыт)
4. Попробуйте найти, что вы не можете сделать. А также в этом кейсе подумайте и над исключительными ситуациями, которые могут произойти.
5. Только теперь подумайте над тем, что вы можете улучшить в текущем решении.
Data Science: Алгоритмы и Структуры данных | Чат 💬
Список библиотек с открытым исходным кодом для развертывания, мониторинга и масштабирования проектов машинного обучения
➡️Ссылка на Github
Data Science: Алгоритмы и Структуры данных | Чат 💬
Экспоненциальный поиск или Finger Search
Finger Search ищет элемент в отстортированном массиве, перескакивая 2 ^ i элеентов на каждой итерации, где i представляет значение переменной управления циклом. После идет проверка: присутствует ли элемент поиска между последним и текущим переходом.
Как это работает?
1. Проходите по элементам массива по 2 ^ i за один раз, выполняя поиск условия:
Array[2 ^ (i - 1)] < valueWanted < Array[ 2 ^ i]
Если 2 ^ i больше, чем длина массива, установите верхнюю границу равной длине массива
2. Выполните двоичный поиск между массивами
Array[2 ^ (i - 1)] и Array[2 ^ i]
Data Science: Алгоритмы и Структуры данных | Чат 💬
Знакомим с разработкой и учим думать, как программист.
Подготовительный 14-дневный курс по Python для новичков 🐍
Даём только мясную и прикладную информацию. Никакой воды и траты времени! По окончании вы уже владеете базовым знанием языка.
Вас ждет 69 уроков теории и практики прямо в браузере, вебинары, лайвкодинг и первая собственная программа на Python, написанная под руководством опытного наставника.
Начинаем 9 ноября, вы с нами?
Data Science: Алгоритмы и Структуры данных | Чат 💬
Ищете облачную платформу? Есть Beget
✅ Аптайм 99,98% в дата-центрах Tier III
✅ Техподдержка 24/7 — живые люди, без ботов
✅ Прозрачная оплата без скрытых платежей
✅ Более 200 000 клиентов доверяют Beget
Узнать больше
#реклама 16+
beget.com
О рекламодателе
4 Python библиотеки для интерпретируемого машинного обучения
Yellowbrick
Эта Python библиотека и расширение пакета scikit-learn. Предоставляет некоторые полезные и симпатичные визуализации для моделей машинного обучения. Объекты визуализатора, основной интерфейс — оценки scikit-learn, поэтому если привыкли работать с scikit-learn, рабочий процесс покажется знакомым.
ELI5
Ещё одна библиотека визуализации, которая пригодится для отладки моделей машинного обучения и объяснения сделанных прогнозов. Работает с самыми распространёнными инструментами машинного обучения на Python, включая scikit-learn, XGBoost и Keras.
LIME
Расшифровывается как локальные интерпретируемые, независимые от модели объяснения. Интерпретирует предсказания, сделанные алгоритмами машинного обучения. Lime поддерживает объяснение единичных прогнозов из диапазона классификаторов, а также взаимодействует с scikit-learn «из коробки».
MLxtend
В этой библиотеке найдёте массу вспомогательных функций для машинного обучения. Она охватывает классификаторы стекинга и голосования, оценку модели, выделение признаков, а также проектирование и построение графиков.
Data Science: Алгоритмы и Структуры данных | Чат 💬
Алгоритм Interpolation Search
1. В цикле вычисляем значение позиции (pos), используя формулу, что обсуждали в предпоследнем посте.
2. Если есть совпадения, то вернуть индес элемента и выйти из цикла
3. Если элемент меньше, чем позиционный элемент, вычислить положение для левого подмассива, в противном случае в правом подмассиве
4. Повторять, пока не найдется совпадение или пока подмассив не уменьшится до нуля.
Data Science: Алгоритмы и Структуры данных | Чат 💬
Выбор позиции для поиска в Interpolation Search
Чтобы разделить массив на две части, мы используем следующую формулу:
mid = Lo + ((Hi - Lo) / (A[Hi] - A[Lo])) * (X - A[Lo]), где
A - наш искомый массив
X - элемент, который мы ищем
Lo - наименьший индекс массива
Hi - наивысший индекс массива
An - значение, хранящееся под индексом n в списке.
Если средний элемент больше, чем искомый элемент, то позиция снова вычисляется, но уже в подмассиве. Это продолжается до тех пор, пока размер подмассива не уменьшится до нуля
Data Science: Алгоритмы и Структуры данных | Чат 💬
«Прометей» — это решение для раннего обнаружения пожаров, в котором объединены ИИ, компьютерное зрение, автоматические дроны и сервисы прогноза погоды.
➡️Читать статью
Data Science: Алгоритмы и Структуры данных
Interpolation Sort
Имея отсортированный массив нам надо написать функцию поиска элемента. Линейный поиск сделает это за время O(n) , Jump Search - O(√ n), а бинарный за O(log n).
Поиск с интерполяцией (Interpolation Sort) является улучшением по сравнением с бинарным поиском для экземпляров, где значения в отсортированном массиве равномерно распределены.
Двоичный поиск всегда переходит к центру. Interpolation Sort может идти в разные места в соответствии с значением ключа, по которому выполняется поиск. Например, если значение ближе к последнему элементу, поиск выгоднее начать с конца.
Сложность выйдет O(log(log n)). О том как выбрать значения ключа, поговорим в следующем посте.
Data Science: Алгоритмы и Структуры данных | Чат 💬
Когда стоит использовать Jump Search
Бинарный поиск - лучше, чем Jump Search. Для чего же тогда использовать Jump Search. У него есть одно преимущество перед бинарным поиском: мы возвращаемся назад только один раз. Для бинарного поиска может потребоваться до O(logN) переходов в ситуации, когда мы захотим найти элемент, который является наименьшим или даже меньше чем наименьший.
Data Science: Алгоритмы и Структуры данных | Чат 💬
Несколько полезных вещей, которые необходимо знать о Machine Learning
Повышаем квалификацию по ML. В данном документе содержится 11 полезных советов/уроков, одинаково применимых к машинному обучению и глубокому обучению.
➡️Читать документ
Data Science: Алгоритмы и Структуры данных
Оптимально выбрать блок для пропуска в Jump Search
В худшем случае мы должны делать n/m перехов. Где n - длина массива, а m - длина размера перехода. Если проверенное значение больше, чем искомый элемент, мы выполним m-1 сравнений больше, так как будем использовать линейный поиск.
Общее количество сравнений в наихудшем случае будет ((n / m) + m - 1). Значение функции ((n / m) + m - 1) будет минимальным, когда m = √n. Следовательно, лучший размер шага будет являться m = √n
Data Science: Алгоритмы и Структуры данных | Чат 💬
Jump Search
Как и бинарный поиск, поиск с переходом(прыжком) выполним только для отсортированных массивов. Основная идея состоит в том, чтобы проверять меньшее количество элементов, перескакивая вперед на фиксированное количество шагов, пропуская их.
Рассмотрим массив - 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, длина - 16. Размер блока возьмем - 4. Jump Search найдет значение 55 с помощью следующих шагов:
1. Переход от индекса 0 к индексу 4
2. Переход с индекса 4 к индеку 8
3. Перейсти с индекса 8 к индексу 12
4. Поскольку элемент с индексом 12 больше 55, мы вернемся на шаг назад. Переходим на индекс 8
5. Выполняем линейный поиск с индекса 8, чтобы получить элемент 55
Data Science: Алгоритмы и Структуры данных | Чат 💬
Теорема Байеса: Святой Грааль Data Science
Теорема Байеса — одно из важнейших правил теории вероятностей, применяемых в Data Science. Рассмотрим интуитивный вывод теоремы на практике.
➡️Читать статью
Data Science: Алгоритмы и Структуры данных
Операция поиска в Splay Tree
Операция поиска в Splay Tree выполняет стандартный поиск BST, помимо поиска, также происходит и перемещение узла в корень.
Если поиск успешный, то найденный узел перемещается и становится корневым. В противном случае последний узел, к которому было обращение (до достижения NULL) - перемещается в корень.
Доступ к узлу
1. Через корень
2. Узел является дочерним по отношению к корню, либо левым потомком (применим правое вращение), либо правм потомком
3. Другие 2, которые расмотрим в будущем
Data Science: Алгоритмы и Структуры данных | Чат 💬
Расширяющее (косое) дерево - Splay Tree
Основная идея Splay Tree состоит в том, чтобы перенести элемент, к которому недавно осуществлен поиск(или доступ) в корень дерева. Тем самым дать возможность достучаться к нему повторно за O(1).
Представьте себе ситуацию, когда у нас есть миллионы ключей, и лишь некоторые из них используются чаще других, что кстати говоря весьма вероятно во многих приложениях.
Все операции с Splay Tree выполняются в среднем за O(log N) времени, где N - количество записей в дереве.
В ближайшие дни рассмотрим основные операции над данным деревом.
Data Science: Алгоритмы и Структуры данных | Чат 💬
Если вы хотите серьезно погрузиться в AI, то Вам просто необходимо освежить свои математические навыки!
В данном видео автор описывает свою стратегию максимально быстрого изучения математики.
➡️Смотреть видео
⬇️ Скачать видео
Data Science: Алгоритмы и Структуры данных
Реализация вставки в Trie (Python)
Data Science: Алгоритмы и Структуры данных | Чат 💬
