Обновить
1024K+

Python *

Высокоуровневый язык программирования

681,81
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Расчёт каннибализации на основе классического A/B-теста и метод bootstrap’а

Время на прочтение12 мин
Охват и читатели21K
В данной статье рассмотрен метод расчёта каннибализации для мобильного приложения на основе классического A/B-теста. В данном случае рассматриваются и оцениваются целевые действия в рамках процесса реаттрибуции с рекламного источника (Direct, Criteo, AdWords UAC и прочих) по сравнению с целевыми действиями в группе, на которую реклама была отключена.

В статье дан обзор классических методик сравнения независимых выборок с кратким теоретическим базисом и описанием примененных библиотек, в т.ч. вкратце описывается суть метода bootstrap’а и его реализация в библиотеке FaceBook Bootstrapped, а также проблемы, возникающие на практике при применении этих методик, и способы их решения.
Читать дальше →

Вейвлет — анализ.Часть 1

Время на прочтение10 мин
Охват и читатели52K

Введение


Рассмотрим дискретное вейвлет – преобразования (DWT), реализованное в библиотеке PyWavelets PyWavelets 1.0.3. PyWavelets — это бесплатное программное обеспечение с открытым исходным кодом, выпущенное по лицензии MIT.

При обработке данных на компьютере может выполняться дискретизированная версия непрерывного вейвлет-преобразования, основы которого описаны в моей предыдущей статье. Однако, задание дискретных значений параметров (a,b) вейвлетов с произвольным шагом Δa и Δb требует большого числа вычислений.

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

Дискретное вейвлет – преобразование (DWT), реализованное в библиотеке PyWavelets, обеспечивает достаточно информации как для анализа сигнала, так и для его синтеза, являясь вместе с тем экономным по числу операций и по требуемой памяти.

Когда нужно использовать вейвлет-преобразование вместо преобразования Фурье


Преобразования Фурье будет работать очень хорошо, когда частотный спектр стационарный. При этом частоты, присутствующие в сигнале, не зависят от времени, и сигнал содержит частоты xHz, которые присутствует в любом месте сигнала. Чем нестационарнее сигнал, тем хуже будут результаты. Это проблема, так как большинство сигналов, которые мы видим в реальной жизни, нестационарны по своей природе.
Читать дальше →

Должны ли строки в Python быть итерируемы?

Время на прочтение3 мин
Охват и читатели7.4K
И сотворил Гвидо строки по образу C, по образу массивов символов сотворил их. И увидел Гвидо, что это хорошо. Или нет?

Представьте, что вы пишете совершенно идиоматичный код по обходу неких данных с вложенностью. Beautiful is better than ugly, simple is better than complex, так что вы останавливаетесь на следующем варианте кода:

from collections.abc import Iterable

def traverse(list_or_value, callback):
    if isinstance(list_or_value, Iterable):
        for item in list_or_value:
            traverse(item, callback)
    else:
        callback(list_or_value)

Вы пишите юнит-тест, и что бы вы думали? Он не работает, причём не просто не работает, а

>>> traverse({"status": "ok"}, print)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in traverse
  File "<stdin>", line 4, in traverse
  File "<stdin>", line 4, in traverse
  [Previous line repeated 989 more times]
  File "<stdin>", line 2, in traverse
  File "/usr/local/opt/python/libexec/bin/../../Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py", line 139, in __instancecheck__
    return _abc_instancecheck(cls, instance)
RecursionError: maximum recursion depth exceeded in comparison

Как? Почему? В поисках ответа вы погрузитесь в удивительный мир коллекций бесконечной глубины.
Читать дальше →

Ищем свободное парковочное место с Python

Время на прочтение14 мин
Охват и читатели69K
image

Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи.

Я живу в хорошем городе. Но, как и во многих других, поиск парковочного места всегда превращается в испытание. Свободные места быстро занимают, и даже если у вас есть своё собственное, друзьям будет сложно к вам заехать, ведь им будет негде припарковаться.

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

image

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

Поэтому давайте немного развлечёмся и напишем точную систему уведомлений о свободной парковке с помощью Python и глубокого обучения
Читать дальше →

MU-MIMO: один из алгоритмов реализации

Время на прочтение5 мин
Охват и читатели8.8K

Предисловие


В качестве дополнения к моей недавней статье хотелось бы также поговорить о теме MU (Multi User) MIMO. Есть у мною уже упомянутого профессора Хаардта одна очень известная статья, где он вместе со своими коллегами предлагает алгоритм разделения пользователей по нисходящему каналу (Down Link) на основе линейных методов, а именно блоковой диагонализации (Block Diagonalization) канала. Статья имеет внушающее количество цитирований, а также является краеугольной публикацией для одного из заданий экзамена. Поэтому почему бы и не разобрать основы предлагаемого алгоритма?


Читать дальше →

Apache Kafka и потоковая обработка данных с помощью Spark Streaming

Время на прочтение9 мин
Охват и читатели38K
Привет, Хабр! Сегодня мы построим систему, которая будет при помощи Spark Streaming обрабатывать потоки сообщений Apache Kafka и записывать результат обработки в облачную базу данных AWS RDS.

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

Как реализовать этот кейс без применения магии и волшебных заклинаний — читаем под катом! Поехали!


(Источник картинки)
Читать дальше →

Разработка белков в облаке с помощью Python и Transcriptic или Как создать любой белок за $360

Время на прочтение57 мин
Охват и читатели16K
Что, если у вас идея для классного, полезного белка, и вы хотите получить его в реальности? Например, хотите создать вакцину против H. pylori (как словенская команда на iGEM 2008), создав гибридный белок, который сочетает фрагменты флагеллина E. coli, стимулирующие иммунный ответ с обычным флагеллином H. pylori?

Дизайн гибридного флагеллина вакцины против H. pylori, представленный командой Словении на iGEM 2008

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

В этой статье я покажу код Python от идеи белка до его экспрессии в бактериальной клетке, не прикасаясь к пипетке и не разговаривая ни с одним человеком. Общая стоимость составит всего несколько сотен долларов! Используя терминологию Виджая Панде из A16Z, это Биология 2.0.
Читать дальше →

Consumer Driven Contracts или Gitlab CI глазами QA test automation

Время на прочтение8 мин
Охват и читатели6.1K

Цели данной публикации:


  • Краткое введение в Consumer Driven Contracts (CDC)
  • Настройка CI pipeline на основе CDC

Consumer Driven Contracts


В этой части мы пройдемся по основным моментам CDC. Данная статья не является исчерпывающей на тему контрактного тестирования. Существует достаточное количество материалов на эту тему на том же Хабре.


Для продолжения нам необходимо познакомиться с основными положениями CDC:


  • Контактное тестирование находится на уровне Service/Integration Tests над Unit Tests согласно пирамиде автотестирования (Mike Cohn)
  • Контрактное тестирование может применяться, когда есть 2 (или более) сервиса, которые взаимодействуют друг с другом
  • Сonsumer driven подход означает, что первым шагом в реализации является написание теста на стороне потребителя. Результатом теста является пакт (контракт) в формате json, который описывает взаимодействие между потребителем (например, веб-интерфейс / мобильный интерфейс: сервис, который хочет получить некоторые данные) и поставщиком (например, серверный API: сервис, который предоставляет данные)
  • Следующим шагом является проверка договора с провайдером. Это полностью осуществлено фреймворком Pact.
Читать дальше →

PIL на Python от простого к сложному

Время на прочтение2 мин
Охват и читатели76K
Чтобы дойти до сложных алгоритмов обработки, стоит проанализировать стандартные схемы, с чего я и предлагаю начать.

Для примеров обработки будет использоваться изображение с различным наборов цветов:

image

Для старта нам потребуется два модуля библиотеки:

from PIL import Image, ImageDraw 

Настроим инструменты для комфортной дальнейшей работы:

image = Image.open('test.jpg')  # Открываем изображение
draw = ImageDraw.Draw(image)  # Создаем инструмент для рисования
width = image.size[0]  # Определяем ширину
height = image.size[1]  # Определяем высоту
pix = image.load()  # Выгружаем значения пикселей

Приступим


Обрабатывать изображения будем в формате RGB. Также PIL поддерживает работу с форматами 1, L, P, RGB, RGBA, CMYK, YCbCr, LAB, HSV, I, F.
Читать дальше →

Подборка @pythonetc, апрель 2019

Время на прочтение4 мин
Охват и читатели7K


Это десятая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие подборки.
Читать дальше →

Как Netflix использует Питон

Время на прочтение7 мин
Охват и читатели22K


Поскольку многие из нас готовятся к конференции PyCon, мы хотели немного рассказать, как Python используется в Netflix. Мы применяем Python на всём жизненном цикле: от принятия решения, какие сериалы финансировать, и заканчивая работой CDN для отгрузки видео 148 миллионам пользователей. Мы вносим свой вклад во многие пакеты Python с открытым исходным кодом, некоторые из которых упомянуты ниже. Если что-то вас интересует, посмотрите наш сайт вакансий или ищите нас на PyCon.
Читать дальше →

Разработка интерфейса на нескольких экранах. Шаг к использованию ИИ

Время на прочтение2 мин
Охват и читатели2.5K
Для того, чтобы ознакомиться с прототипом системы нужно минимум 2 браузера (или 2 компьютера).

Откройте форму из репозитория в режиме редактирования(edit). В другом браузере (на другом компьютере, планшете, смартфоне) откройте ту же форму в режиме просмотра (show). При редактировании формы все изменения будут отображаться в реальном времени на всех подключенных устройствах.

Для подключения выберите любое число от 1 до 9999 и запомните его. Это будет ваш логин и пароль на всех устройствах. Если ваша форма начнет меняться без вашего участия, значит, кто-то использует то же число, что и вы. Выйдете из системы (Logoff) и зайдите с другим числом.

Перейти в репозиторий форм


Читать дальше →

Python в Visual Studio Code. Апрельский выпуск

Время на прочтение3 мин
Охват и читатели20K
Мы рады сообщить, что в апреле 2019 вышло обновление расширения Python для Visual Studio Code. Вы можете загрузить расширение Python из Marketplace или установить его прямо из галереи расширений в Visual Studio Code. Вы можете узнать больше о поддержке Python в Visual Studio Code в документации.

В этом выпуске мы внесли ряд улучшений, перечисленных в нашем журнале изменений, закрыв в сумме 84 проблемы, среди которых:

  • Variable Explorer и Data Viewer
  • Усовершенствования конфигурации отладки
  • Дополнительные улучшения в Python Language Server

Заглядывайте под кат, чтобы узнать больше!

image
Читать дальше →

Ближайшие события

Оцениваем пропускную способность MIMO канала (алгоритм Water-pouring прилагается)

Время на прочтение9 мин
Охват и читатели11K


Предисловие


В лето 2016 от всем известного события вашему покорному слуге в числе группы других студентов удалось побывать на лекциях профессора Мартина Хаардта по тематике MIMO, проводимых им в рамках международной магистерской программы "Communication and Signal Processing". Но, к сожалению, полторы недели из двух я довольно сильно проболел — и поэтому тогда ряд тем просто выпал у меня из сферы достаточного понимания… Однако, уже по прошествии некоторого времени разбор основ MIMO стал моим хобби — не оставлять же дело незаконченным.


По-немногу всё это выросло в ряд небольших конспектов-семинаров, не поделиться которыми, наверное, было бы неправильным. И вот сегодня, в честь Дня связи, мне бы хотелось разобрать с вами тему пропускной способности MIMO канала — тему несложную, но всё же вызывающую определенные трудности у студентов (и не только у студентов).


Людям непричастным может казаться, что увеличение количества приёмных и предающих антенн в рамках названной технологии ровно на столько же увеличивает и пропускную способность системы: например, если поставить 2 антенны на приёмной стороне и 2 антенны на передающей (MIMO 2x2), то пропускная способность однозначно увеличится в 2 раза. Но так ли это хотя бы в теории? Попробуем разобраться!

Читать дальше →

Методы сжатия/хранения медиа данных в форматах WAVE и JPEG, часть 1

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

Здравствуйте! Моя первая серия статей будет направлена на изучение методов сжатия и хранения изображений/звука, таких как JPEG (изобр.) и WAVE (звук), также в них будут примеры программ с использованием этих форматов (.jpg, .wav) на практике. В этой части мы рассмотрим именно WAVE.

Читать дальше →

Управление компьютером через Telegram

Время на прочтение3 мин
Охват и читатели30K

Вступление


Привет, Хабр!

Недавно хотел установить себе приложение для управления мышью на компьютере, но у меня возникли проблемы при подключении телефона и у меня появилась идея сделать что-то подобное самому, но как? Перебрав несколько вариантов я вспомнил о телеграм ботах которые могут вполне подойти для того чтобы сделать что подобное в текстовом варианте, например ты пишешь боту "/open chrome" и у тебя на компьютере открывается Chrome.
Читать дальше →

Введение в Python

Время на прочтение12 мин
Охват и читатели106K
В данной статье мы затронем основы Python. Мы все ближе и ближе к цели, в общем, скоро приступим к работе с основными библиотеками для Data Science и будем использовать TensorFlow (для написания и развертывания нейросетей, тобишь Deep Learning).

Установка


Python можно скачать с python.org. Однако если он еще не установлен, то вместо
него рекомендую дистрибутивный пакет Anaconda, который уже включает в себя большинство библиотек, необходимых для работы в области науки о данных.

Если вы не используете дистрибутив Anaconda, то не забудьте установить менеджер пакетов pip, позволяющий легко устанавливать сторонние пакеты, поскольку некоторые из них нам понадобятся. Стоит также установить намного более удобную для работы интерактивную оболочку IPython. Следует учитывать, что дистрибутив Anaconda идет вместе с pip и IPython.

Пробельные символы


Во многих языках программирования для разграничения блоков кода используются
фигурные скобки. В Python используются отступы:

# пример отступов во вложенных циклах for
for i in [ 1, 2, 3, 4, 5] :
print (i) # первая строка в блоке for i
for j in (1, 2, З, 4, 5 ] :
print ( j ) # первая строка в блоке for j
print (i + j) # последняя строка в блоке for j
print (i) # последняя строка в блоке for i
print ( "циклы закончились ")
Читать дальше →

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

Время на прочтение4 мин
Охват и читатели14K
captain_barbossa.jpg

Привет, Хабр! Хм, у меня такое чувство, будто мы уже встречались… Ах, да. Вот же тот пост, где мы лампово обсудили, приемлемо ли мониторить окружение, ограничивать пользователя в количестве устройств для просмотра, предоставлять исполняемые файлы вместо оплаченных видео и по-другому всячески некультурно себя вести при организации «защиты» видеокурсов от пиратства.

И все бы ничего, да вот только нельзя критиковать, не предлагая взамен своего решения. «Ты можешь лучше, что ли?!», — раздавались возгласы из комментариев. «Лучше бы поддержал соотечественника, помог сделать их продукт лучше!», — вкратце пересказываю я некоторые общие мысли. Справедливо. Так вот, я и правда могу лучше. По крайней мере, мое предложение не будет требовать от конечного пользователя запуска кривого софта вместо ожидаемых видеофайлов.
Читать дальше →

Почему вам стоит участвовать в хакатонах

Время на прочтение7 мин
Охват и читатели66K


Примерно полтора года назад я начал участвовать в хакатонах. За этот временной промежуток я успел принять участие в более чем 20 мероприятиях различного масштаба и тематик в Москве, Хельсинки, Берлине, Мюнхене, Амстердаме, Цюрихе и Париже. Во всех мероприятиях я занимался анализом данных в том или ином виде. Мне нравится приезжать в новые для себя города, налаживать новые контакты, придумывать свежие идеи, реализовывать старые задумки за короткий промежуток времени и адреналин во время выступления и оглашения результатов.

Данный пост — первый из трех постов на тематику хакатонов, в нем я расскажу, что такое хакатоны, почему вам стоит начать участвовать в хакатонах. Второй пост будет о темной стороне данных мероприятий — про то как организаторы делали ошибки при проведении, и к чему они привели. Третий пост будет посвящен ответам на вопросы про около-хакатонную тематику.
Читать дальше →

Хороший, плохой, злой — тестирование в проекте новичков

Время на прочтение6 мин
Охват и читатели12K

Предисловие: в университете было получено задание — собрать scrum команду, выбрать проект и работать над ним в течении семестра. Наша команда выбрала разработку веб-приложения (react + flask). В этой статье я постараюсь рассказать, какими тесты должны были быть, и проанализировать, что у нас получилось на бекенде.


Читать дальше →