Data Science: Алгоритмы и Структуры данных
7.67K subscribers
454 photos
43 videos
6 files
3.39K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество, авторские права: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Топ-10 алгоритмов машинного обучения

В машинном обучении есть нечто, называемое теоремой «No Free Lunch». Вкратце, в ней говорится, что ни один алгоритм не работает лучше всего для каждой проблемы, и это особенно важно для контролируемого обучения (т.е. predictive modeling).

➡️Читать статью

Data Science: Алгоритмы и Структуры данных
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача: переместить нули в конец

Дан массив случайных чисел, необходимо переместить все нули данного массива в конец. Например, если задан массив 1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, необходимо его изменить к виду: 1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0.

Порядок остальных элементов должен остаться прежним. Сложность O(n), а пространство О(1)

Data Science: Алгоритмы и Структуры данных
🔥3
Алгоритм решения задачи

Есть куча способов решить данную задачу. Ниже я приведу простой и интересный способ решить ее.

Пройдитесь по заданному массиву слева направо. Во время обхода поддерживайте количество ненулевых элементов в массиве (к примеру в счетчике count). Для каждого ненулевого элемента gjvtcnbnt элемент в arrcount и увеличьте сам count.

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

Data Science: Алгоритмы и Структуры данных
👍1
Настраиваем Python для машинного обучения на Windows

В этой статье рассказываем о возможностях Python для машинного обучения на Windows, описание дистрибутива Anaconda, процесс его установки и создание нейронной сети.

➡️Читать статью

Data Science: Алгоритмы и Структуры данных
Please open Telegram to view this post
VIEW IN TELEGRAM
Решение задачи через один только проход

Да, эту задачу можно решить также и тупо одним проходом, нам снова понадобиться count(счетчик). Только теперь, кроме него нам нужна дополнительная функция swap(которая меняет местами элементы)

Итого у нас будет изначально count = 0 и цикл от начала до конца нашего массива. Мы будем проверять, если наш текущий элемент не равен 0, мы будем менять местами count элемент и элемент на текущей i-ой позиции:

for i in range(0, n):
if (arr[i] != 0):
   arr[count], arr[i] = arr[i], arr[count]
    count+=1

Data Science: Алгоритмы и Структуры данных
Двоичное дерево поиска

Двоичное дерево поиска(BST) - дерево, в котором все узлы следуют свойствам:

1. Левое поддерево узла имеет ключ, меньше или равный ключу его родительского узла

2. Правое поддерево узла имеет ключ больше, чем ключ родительского узла.

Таким образом дерево делит все свои поддеревью на два сегмента: левое и правое поддеревья. Есть еще одно определение данного дерева:

leftsubtree(keys) =< node(key) =< rightsubtree(keys)

Data Science: Алгоритмы и Структуры данных
Анализ данных на R в примерах и задачах

Видеокурс из двух частей от Computer Science Center

➡️Первая часть
➡️Вторая часть

Data Science: Алгоритмы и Структуры данных
Please open Telegram to view this post
VIEW IN TELEGRAM
Представление и свойства BST

Как мы вчера уже выяснили BST - набор узлов, расположенных по свойствам BST. Каждый узел имеет ключ и значение. При поиске задействуется сам ключ и сравнивается с ключами в BST, и если он найден - то возвращается значение.

Соответственно операции над BST:

1. Поиск по ключу
2. Вставка элемент в дерево
3. Обходы дерева

Data Science: Алгоритмы и Структуры данных
Алгоритм вставки в бинарное дерево поиска

Для вставки нового элемента в дерево вам придется сделать последовательность шагов:

1. Начните обход дерева с корня

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

3. Достигнув конца, просто вставьте этот узел слева (если он меньше) или справа

Data Science: Алгоритмы и Структуры данных
SciPy — библиотека для языка программирования Python с открытым исходным кодом, предназначенная для выполнения научных и инженерных расчётов.

Data Science: Алгоритмы и Структуры данных
Алгоритм удаления из BST (дерева бинарного поиска)

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

1. Находим узел который собираемся удалить и удаляем

2. Если у удаляемого узла есть только один дочерний элемент, то скопируйте дочерний элемент в узел(где находился ваш удаляемый элемент), и удалите дочерний элемент у него.

3. Если два дочерних узла. Найдите в порядке приемника необходимый узел из двух дочерних. Скопируйте содержимое приемника и удалите приемника. Не забудьте правильно расположить 2 дочерний элемент, ведь он станет теперь дочерним для перемещенного приемника!

Data Science: Алгоритмы и Структуры данных
❤1
Shell Sort - сортировка массива

Новый вариант сортировки, который мы сегодня разберем - Shell Sort.

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

Данный интервал высчитывается при помощи формулы Кнута:

h = h * 3 + 1,

где h - интервал с начальным значением 1.

На картинке показан метод самой сортировки, однако позже мы его разберем более подробно!

Data Science: Алгоритмы и Структуры данных
TensorFlow.js: машинное обучение на JavaScript с доставкой в браузер

➡️Читать статью

Data Science: Алгоритмы и Структуры данных
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача: за минимальное количество перестановок, найти сведение меньших или равных элементов к значению K

Дан массив из n натуральных чисел и числа K. Найдите минимальное количество перестановок, необходимое для сведение всех чисел, что равны или меньше числу К.

Алгоритм

1. Создайте счетчик count, занесите туда все элементы что меньше или равны K
2. Используя технику двух указателей и "двигающегося окна", длиной count. Отслеживайте таким образом сколько элементов в этом диапазоне больше К
3. Повторяйте шаг 2 до тех пор пока не закончатся окна длинной count и выбирайте среди них минимум плохих вариантов

Data Science: Алгоритмы и Структуры данных
Введение в динамическое программирование

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

То есть динамическое программироание - это тоже разбитие проблемы на более мелкие подзадачи. Однако разница между подходами есть! Подзадачи динамического программирования не решаются независимо. Данные результаты запоминаются и используются для аналогичных или перекрывающих подзадач.

Data Science: Алгоритмы и Структуры данных
Примеры использования динамического программирования

1. Ханойская башня
2. Кратчайший путь Дейкстры
3. Числовой ряд Фибоначи
4. Проблемы с рюкзаками, камнями и прочим набором задач, где надо сборка вещей
5. Все возможные пары кратчайшего пути по Флойд-Варшалл
6. Планирование

Data Science: Алгоритмы и Структуры данных
👍1
Этапы динамического программирования

1. Проблему делять на меньшую перекрывающую подзадачу

2. Оптимальное решение достигается при помощи использования оптимального решения небольших задач

3. Под капотом, всегда (почти всегда) используется memoization

Data Science: Алгоритмы и Структуры данных
👍2
Мемоизация (Memoization)

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

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

Алгоритм работы:

1. Если функция не вызывалась, то вызвать ее и сохранить результат

2. Если вызывалась, достать сохраненный результат по ключу (к примеру по параметрам)

Как видно, мемоизацию можно организовать при помощи кэша(ключ-значение). В дальнейшем мы об этом более подробно поговорим!

Data Science: Алгоритмы и Структуры данных
👍1
animation_467.gif
89 KB
Быстрая сортировка (Quick Sort)

Быстрая сортировка - является высокоэффективным алгоритмом сортировки. Основана она на разбиении массива на меньше подмассивы. Большой массив делится на 2 более маленьких: один из них содержит значение меньше выбранного (pivot), другой больше значения pivot.

Базовая суть алгоритма представлена в GiF. Посмотрите ее внимательно!

Data Science: Алгоритмы и Структуры данных
Основа алгоритма Quick Sort

Как я уже говорил сегодня, суть алгоритма заключается в разделении массива на два подмассива.

Этот алгоритм эффективен для больших объемов данных, так как худшая сложность составит О(n^2)

Алгоритм

1. Выберите наибольшее значение индекса - в качестве pivot

2. Возьмите 2 переменные, чтобы указать левую и правую часть списка. Исключая наш pivot. Эта переменная и будет хранить наш массив слева и справа

3. Переупорядочьте массив, помещая элемент на его окончательно место

4. Отсортируйте рекурсивно элементы слева от разрешающего

5. Аналогично отсортируйте и правую сторону

Data Science: Алгоритмы и Структуры данных
Анализ данных и Deep Learning

1. Примеры применения анализа данных, стандартные задачи и методы
2. Методы решения задачи классификации и регрессии
3. Кластеризация
4. Преобразование признаков
5. Введение в Text Mining
6. Введение в Deep Learning
7. Deep Learning for Data with Sequence Structure
8. Рекомендательные системы
9. Прогнозирование временных рядов

➡️Смотреть видео

⬇️ Скачать видео

Data Science: Алгоритмы и Структуры данных
Please open Telegram to view this post
VIEW IN TELEGRAM