Как стать автором
Обновить
4
0

Пользователь

Отправить сообщение

Понимаем красно-черное дерево. Часть 1. Введение

Время на прочтение5 мин
Количество просмотров46K

Довольно долгое время я воевал с красно-черным деревом. Вся информация, которую я находил, была в духе "листья и корень дерева всегда черные, ПОТОМУ ЧТО", "топ 5 свойств красно-черного дерева" или "3 случая при балансировке и 12 случаев при удалении ноды". Такой расклад меня не устраивал.

Мне не хотелось заучивать свойства дерева, псевдокод и варианты балансировки, я хотел знать: почему. Каким образом цвета помогают при балансировке? Почему у красной ноды не может быть красного потомка? Почему глубину дерева измеряют "черной высотой"?

Ответы на эти вопросы я получил только тогда, когда мне дали ссылку на лекцию про два-три дерево, с которого мы и начнем.

Эта статья разделена на 3 логические части. Я рекомендую прочитать их в указанном порядке. Первая часть (данная) будет направлена на введение в кчд и знакомство с ним. Во второй части мы поговорим о балансировке и вставке в кчд. В третьей, завершающей, части мы разберем процесс удаления ноды. Наберитесь терпения и приятного чтения.

Читать далее
Всего голосов 25: ↑24 и ↓1+30
Комментарии6

Расстояние Махаланобиса

Время на прочтение24 мин
Количество просмотров22K

Основной смысл использования метрики Махаланобиса
1. Термины и определения
2. Расстояние Махаланобиса между двумя точками и между точкой и классом
2.1. Теоретические сведения
2.2. Алгоритм вычисления расстояния между двумя точками и между точкой и классом
2.3. Пример вычисления расстояния между двумя точками и между точкой и классом
3. Расстояние Махаланобиса между двумя классами
3.1. Теоретические сведения
3.2. Алгоритм вычисления расстояния между двумя классами
3.3. Пример вычисления расстояния между двумя классами
4. Расстояние Махаланобиса и метод k-ближайших соседей
5. Взвешенное расстояние Махаланобиса
6. Заключение

Если есть замечания или ошибки, пишите на почту quwarm@gmail.com или в комментариях.

Читать далее
Всего голосов 27: ↑26 и ↓1+32
Комментарии7

OpenCV в Python. Часть 4

Время на прочтение5 мин
Количество просмотров60K

Привет, Хабр! В этой статье я бы хотел рассказать как с помощью только OpenCV распознавать объекты, на примере игральных карт:


Читать дальше
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Цифровая логистика: решение транспортной задачи спроса и предложения с помощью библиотеки DOcplex от IBM

Время на прочтение13 мин
Количество просмотров7.8K

Всем привет, меня зовут Дмитрий Кузин (Application Development Senior Analyst в Accenture), и в своей статье я делюсь историей о том, как запрос на решение задачи в корпоративной рассылке привел к освоению Python библиотеки DOcplex от IBM, предназначенной для решения оптимизационных задач.

Я бы хотел поделиться личным опытом решения транспортной задачи с применением Python-библиотеки DOcplex от IBM. Если вкратце, то это задача про то, как с наименьшими затратами доставить продукцию или товары от производителей к покупателям, учитывая предложение первых и спрос вторых. В статье я дам основные определения транспортной задачи, покажу, как правильно сформулировать её условие, а также приведу пример решения на Python.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии4

Как разобраться в дереве принятия решений и сделать его на Python

Время на прочтение5 мин
Количество просмотров30K
Совсем скоро, 20 ноября, у нас стартует новый поток «Математика и Machine Learning для Data Science», и в преддверии этого мы делимся с вами полезным переводом с подробным, иллюстрированным объяснением дерева решений, разъяснением энтропии дерева решений с формулами и простыми примерами, вводом понятия «информационный выигрыш», которое игнорируется большинством умозрительно-простых туториалов. Статья рассчитана на любящих математику новичков, которые хотят больше разобраться в работе дерева принятия решений. Для полной ясности взят совсем маленький набор данных. В конце статьи — ссылка на код на Github.


Приятного чтения!
Всего голосов 17: ↑15 и ↓2+18
Комментарии0

Быстрая медианная фильтрация с использованием AVX-512

Время на прочтение11 мин
Количество просмотров7.1K

Недавно Боб Стигалл сделал в конференции CppCon 2020 доклад под названием «Adventures in SIMD-thinking”, где он среди прочего рассказывал о своем опыте использования AVX512 для медианной фильтрации (с окном 7). Этот доклад вызвал у меня двоякие чувства: с одной стороны, прикольно сделано, и заявлено почти 20-кратное ускорение по сравнению с «тупейшей» реализацией через STL; с другой стороны, за один проход алгоритма из 16 входных семплов у него получалось всего 2 выходных, хотя входных данных хватало на 10, да и некоторые детали реализации вызвали желание попытаться их улучшить. Я подумал-подумал, и придумал идею, потом еще, потом попробовал их «в софте» и понял, что у меня появилось что-то, чем можно поделиться :) Так и получилась эта статья.

Читать далее
Всего голосов 45: ↑45 и ↓0+45
Комментарии17

Пишем шеллкод под Windows на ассемблере

Время на прочтение22 мин
Количество просмотров18K
image

В этой статье я хочу показать и подробно объяснить пример создания шеллкода на ассемблере в ОС Windows 7 x86. Не смотря на солидный возраст данной темы, она остаётся актуальной и по сей день: это стартовая точка в написании своих шеллкодов, эксплуатации переполнений буферов, обфускации шеллкодов для сокрытия их от антивирусов, внедрения кода в исполняемый файл (PE Backdooring). В качестве примера я выбрал TCP bind shellcode, т.к. на мой взгляд — это лучший пример, потому что все остальные базовые шеллкоды имеют много общего с ним. Статья будет полезна для специалистов по информационной безопасности, пентестеров, начинающих реверс-инженеров и всем, кто желает разобраться в базовых принципах работы ОС Windows. Плюсом — улучшаются навыки программирования.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+23
Комментарии20

Фильтр Калмана — это легко

Время на прочтение18 мин
Количество просмотров84K


Много людей, в первый раз сталкивающихся в работе с датчиками, склонны считать, что получаемые показания — это точные значения. Некоторые вспоминают, что в показаниях всегда есть погрешности и ошибки. Чтобы ошибки в измерениях не приводили к ошибкам в функционировании системы в целом, данные датчиков необходимо обрабатывать. На ум сразу приходит словосочетание “фильтр Калмана”. Но слава этого “страшного” алгоритма, малопонятные формулы и разнообразие используемых обозначений отпугивают разработчиков. Постараемся разобраться с ним на практическом примере.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+69
Комментарии34

Как я писал магистерскую диссертацию по компьютерному зрению

Время на прочтение4 мин
Количество просмотров6.6K
В этой статье я продолжу тему компьютерного зрения.

См. предыдущие статьи: Простой алгоритм распознавания движений и алгоритм поиска смещения объектов на изображении. Напомню, что написать эти статьи меня сподвигло то, что когда я начал работать над магистерской диссертацией на тему «Анализ пространственной структуры динамических изображений», то столкнулся с проблемой, что очень трудно найти какие-то готовые примеры алгоритмов распознавания образов и движущихся объектов. Везде, и в литературе, и в Интернете одна только голая теория. С тех пор прошло довольно много времени, я успел успешно защитить диссертацию и получить красный диплом, а теперь пишу, чтобы поделиться опытом.
Читать дальше →
Всего голосов 6: ↑3 и ↓3+3
Комментарии9

Как сделать интерактивную карту с помощью Python и open source библиотек

Время на прочтение6 мин
Количество просмотров50K

Сегодня делимся с вами пошаговым руководством создания интерактивных карт для веб-приложения или блога. Просто сохраните эту статью в закладках. Хоть и существует, например, библиотека d3.js, которая может создавать пользовательские карты, есть несколько инструментов еще проще. В этом посте посмотрим на три простые в обращении, но мощные библиотеки Python с открытым исходным кодом и поработаем с ними.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+16
Комментарии3

Основы линейной регрессии

Время на прочтение13 мин
Количество просмотров187K
Здравствуй, Хабр!

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

! Осторожно, трафик! В статье присутствует заметное число изображений для иллюстраций, часть в формате gif.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии38

Продвинутый уровень визуализации данных для Data Science на Python

Время на прочтение7 мин
Количество просмотров52K
Как сделать крутые, полностью интерактивные графики с помощью одной строки Python

image

Когнитивное искажение о невозвратных затратах (sunk cost fallacy) является одним из многих вредных когнитивных предубеждений, жертвой которых становятся люди. Это относится к нашей тенденции продолжать посвящать время и ресурсы проигранному делу, потому что мы уже потратили — утонули — так много времени в погоне. Заблуждение о заниженной стоимости применимо к тому, чтобы оставаться на плохой работе дольше, чем мы должны, рабски работать над проектом, даже когда ясно, что он не будет работать, и да, продолжать использовать утомительную, устаревшую библиотеку построения графиков — matplotlib — когда существуют более эффективные, интерактивные и более привлекательные альтернативы.

За последние несколько месяцев я понял, что единственная причина, по которой я использую matplotlib, — это сотни часов, которые я потратил на изучение сложного синтаксиса. Эти сложности приводят к часам разочарования, выясняя на StackOverflow, как форматировать даты или добавить вторую ось Y. К счастью, это прекрасное время для построения графиков в Python, и после изучения вариантов, явным победителем — с точки зрения простоты использования, документации и функциональности — является библиотека plotly. В этой статье мы погрузимся прямо в plotly, изучая, как создавать лучшие графики за меньшее время — часто с помощью одной строки кода.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+23
Комментарии10

Блокнот-шпаргалка для быстрого Data preprocessing

Время на прочтение8 мин
Количество просмотров12K
Часто люди, заходящие в область Data Science, имеют не совсем реалистичные представления о том, что их ждет. Многие думают, что сейчас они будут круто писать нейросети, создавать голосового помощника из Железного Человека или обыгрывать всех на финансовых рынках.
Но работа Data Scientist завязана на данных, и один из важнейших и время затратных моментов — это обработка данных перед тем, как их подавать в нейросеть или анализировать определенным способом.

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

Многие профессионалы возможно и не найдут ничего экстраординарного в этой статье, но начинающие смогут подчерпнуть что-то новое, а также каждый, кто давно мечтал сделать себе отдельный notebook для быстрой и структурированной обработки данных может скопировать код и отформатировать его под себя, или скачать готовый notebook с Github.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Полный список вопросов с собеседований по Python для дата-сайентистов и инженеров

Время на прочтение14 мин
Количество просмотров106K
Snake and flowers 2 by pikaole

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

Команда Mail.ru Cloud Solutions перевела статью разработчика, который не раз попадал в такую ситуацию и на основе своего опыта составил список из 53 вопросов и ответов для подготовки к собеседованию. Большинство исследователей данных пишут много кода, поэтому такой список пригодится и дата-сайентистам, и инженерам. Он будет полезен и для соискателей, и для тех, кто проводит собеседования, и для тех, кто просто изучает Python.

Вопросы идут в случайном порядке. Поехали.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+31
Комментарии24

Интерактивная визуализация данных при помощи Plotly: строим красивые графики с Express и Cufflinks

Время на прочтение12 мин
Количество просмотров31K
image


Если Вы все еще используете Matplotlib для создания графиков в Python, самое время взглянуть на мир с высоты альтернативной библиотеки интерактивной визуализации.

Plotly позволяет создавать красивые, интерактивные, экспортируемые графики с помощью всего нескольких строк кода. Однако без карты подъем в гору Plotly может быть медленным и мучительным.

Вот камни преткновения, которые могут появиться на пути авантюристов, решивших покорить эту гору:

  • непонятная начальная настройка для работы оффлайн без аккаунта;
  • неимоверное количество строк кода;
  • устаревшая документация;
  • множество различных инструментов Plotly, в которых можно заблудиться (Dash, Express, Chart Studio и Cufflinks).

Несколько раз попытавшись вскарабкаться на эту гору, я все же нашел карту, снаряжение и короткую тропинку к вершине. В этой статье я укажу вам путь, рассказав как начать работу в оффлайн-режиме, как создавать графики, а потом их корректировать, куда обратиться за помощью и какими инструментами пользоваться.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Энтропия: как Деревья Решений принимают решения

Время на прочтение7 мин
Количество просмотров23K
Перевод статьи подготовлен в преддверии старта курса «Machine Learning».




Вы специалист по Data Science, который сейчас идет по тропе обучения. И вы уже прошли долгий путь с того момента, как написали свою первую строку кода на Python или R. Вы знаете Scikit-Learn как свои пять пальцев. Теперь вы больше сидите на Kaggle, чем на Facebook. Вы не новичок в создании потрясающих случайных лесов и других моделей ансамбля деревьев решений, которые отлично справляются со своей работой. Тем не менее, вы знаете, что ничего не добьетесь, если не будете всесторонне развиваться. Вам хочется копнуть глубже и разобраться в тонкостях и концепциях, лежащих в основе популярных моделей машинного обучения. Что ж, мне тоже.

Сегодня я расскажу о понятии энтропии — одной из важнейших тем статистики, а позже мы поговорим о понятии Information Gain (информационный выигрыш) и выясним, почему эти фундаментальные концепции формируют основу того, как исходя из полученных данных строятся деревья решений.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+13
Комментарии2

Пандемия COVID-19 глазами математика, или почему классическая модель SEIRD не работает

Время на прочтение11 мин
Количество просмотров41K

Аннотация, или о досуге молодых ученых


Последние несколько недель мы с коллегами заканчиваем рабочий день тем, что соревнуемся в точности прогноза развития эпидемии COVID-19 в России, используя различные методы нелинейной регрессии. И если прогноз на завтрашний день неизбежно оказывается хорош, то предсказание на срок больше одной недели отражает реальность лишь в общих чертах. Казалось бы, все понятно: есть эпидемиологические модели, есть методы оптимизации, есть достаточно подробные данные, — достаточно совместить это воедино и получить точный прогноз на месяц, а то и полгода, вперед. В этой статье я поделюсь своими соображениями, что не так с классической моделью SEIRD и как это исправить. И, конечно, приоткрою завесу тайны, окутывающую наше с вами будущее.

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


На рисунке выше приведено общее число подтвержденных случаев COVID-19 в логарифмическом масштабе для России и трех европейских стран, входящих в топ-5 по числу зараженных. Объяснение далее в тексте.
Читать дальше →
Всего голосов 46: ↑41 и ↓5+53
Комментарии156

LDA на статьях LiveJournal + визуализация

Время на прочтение3 мин
Количество просмотров2.2K
Как-то раз стало интересно, какие темы выделит LDA (латентное размещение Дирихле) на материалах «Живого Журнала». Как говорится, есть интерес — нет проблем.

Для начала немного про LDA на пальцах, вдаваться в математические подробности не будем (кому интересно — почитает). Итак, LDA — является одним из наиболее распространенных алгоритмов для моделирования тем. Каждый документ (будь то статья, книга или любой другой источник текстовых данных) представляет собой смесь тем, а каждая тема представляет собой смесь слов.


Картинка взята из Википедии
Читать дальше →
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Байесовский ниндзя

Время на прочтение4 мин
Количество просмотров10K

Coderik однажды отметил: "Фильтра Калмана много не бывает". Так же можно сказать и о теореме Байеса, ведь это с одной стороны так просто, но с другой стороны так сложно осмыслить её глубину.


Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии15

Определяем COVID-19 на рентгеновских снимках с помощью Keras, TensorFlow и глубокого обучения

Время на прочтение16 мин
Количество просмотров25K

С помощью этого руководства мы с помощью Keras, TensorFlow и глубокого обучения научимся на собранном вручную датасете из рентгеновских снимков автоматически определять COVID-19.

Как и многие другие, я искренне беспокоюсь относительно COVID-19. Я заметил, что постоянно анализирую своё состояние и гадаю, подхвачу ли болезнь и когда это произойдёт. И чем больше я об этом беспокоюсь, тем больше это превращается в болезненную игру разума, в которой симптоматика сочетается с ипохондрией:

  • Я проснулся утром, чувствуя некоторую болезненность и слабость.
  • Когда я выполз из кровати, то обнаружил у себя насморк (хотя уже известно, что насморк не является симптомом COVID-19).
  • К тому времени, как я добрёл до ванной, чтобы взять бумажный платок, я уже кашлял.

Сначала я не обращал на это особого внимания — у меня аллергия на пыльцу, а из-за тёплой погоды на восточном побережье США весна в этом году выдалась ранняя. Скорее всего, это аллергические симптомы. Но в течение дня моё состояние не улучшалось. Я сижу и пишу это руководство с градусником во рту. Смотрю вниз и вижу 37,4 °С. Моя нормальная температура тела чуть ниже, чем у других, на уровне 36,3 °С. Всё, что выше 37,2 °С, для меня уже небольшой жар.

Кашель и небольшой жар? Это может быть COVID-19… или просто моя аллергия. Выяснить без тестирования невозможно, и именно это «незнание» делает ситуацию столь пугающей на человеческом уровне.
Для человека нет ничего страшнее неведения.
Всего голосов 45: ↑36 и ↓9+40
Комментарии13

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность