IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте авторский блог

     29.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Пуленепробиваемые модели Django

Перевод статьи: Haki Benita – Bullet Proofing Django Models

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

     28.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

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

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

 

Функции-генераторы позволяют объявить функцию, которая будет вести себя как итератор. Они позволяют программистам создавать быстрые, простые и чистые итераторы. Итератор – это объект, который может быть повторен (зациклен). Он используется для того, чтобы абстрагировать контейнер данных и заставить его вести себя как итерируемый объект. Например, примером итерируемого объекта могут быть строки, списки и словари.

     28.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Как я решал соревнование по машинному обучению data-like

Недавно прошло соревнование от Тинькофф и McKinsey. Конкурс проходил в два этапа: первый — отборочный, в kaggle формате, т.е. отсылаешь предсказания — получаешь оценку качества предсказания; побеждает тот, у кого лучше оценка. Второй — онсайт хакатон в Москве, на который проходит топ 20 команд первого этапа. В этой статье я расскажу об отборочном этапе, где мне удалось занять первое место и выиграть макбук. Команда на лидерборде называлась "дети Лёши".

     28.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

TabPy для работы с данными в ClickHouse из Tableau

Выстраивание коммуникаций между брендами и людьми — то, чем мы в Dentsu Aegis Network занимаемся каждый день, и неотъемлемой частью этой работы является анализ данных. В ряде случаев этот процесс не требует data science (хотя и он у нас есть), тогда мы используем BI платформу Tableau. Ее основная цель — дать нашим сотрудникам и клиентам удобный интерфейс для потребления данных без написания скриптов, SQL запросов и т.п.

В этой статье мы расскажем, как нам удалось решить проблему взаимодействия Tableau с ClickHouse.

     27.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи
     27.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Клон NumPy

Небольшой модуль для работы с массивами в Python без использования сторонних библиотек (клон NumPy, но только на чистом Python).

Домашним заданием в университете задали написать программу, которая вычисляет нормы и разложения матрицы, но запретили использовать сторонние библиотеки. В выборе языка программирования не ограничивали. Я выбрал python (что было ошибкой, т.к. он намного медленнее Java и C/C++) и соответственно мне нельзя использовать NumPy. В процессе пришлось написать функции выполнения операций с массивами, функции нахождения миноров, определителя и тд. В итоге получилась мини библиотека для работы с массивами.

Мой код, написанный на чистом питоне намного медленнее NumPy, который производит вычисления на C и Fortran (плюс мой код не оптимизирован).

     26.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Нейросеть, которая поможет выбрать фильм – «твои вкусы специфичны»

Бывает смотришь фильм, и в голове только один вопрос – «я что опять попался на кликбейт?». Решим эту проблему и будем смотреть только годное кино. Предлагаю немного поэкспериментировать с данными и написать простую нейросеть для оценки фильма.

В основе нашего эксперимента лежит технология сентимент-анализа для определения настроения аудитории к какому-либо продукту. В качестве данных берем датасет обзоров пользователей на фильмы IMDb. Среда разработки Google Colab позволит быстро обучать нейросеть благодаря бесплатному доступу к GPU (NVidia Tesla K80).

     26.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи
     26.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Использование QThread с применением moveToThread

На основе одного из вопросов на форуме я написал пример по использованию QThread в PyQt5, а также использование метода moveToThread для перемещения объекта класса наследованного QObject в другой поток.

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

     25.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Развертывание модели глубокого обучения Keras в виде веб-приложения на Python

Создать классный проект с машинным обучением – это одно дело, другое дело, когда вам нужно, чтобы другие люди тоже смогли его увидеть. Конечно, вы можете положить весь проект на GitHub, но как ваши бабушка с дедушкой поймут, что вы сделали? Нет, нам нужно развернуть нашу модель глубокого обучения в виде веб-приложения, которое будет доступно любому человеку в мире.

     25.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Скрываем исходный код пакета с помощью Cython

О том, как спрятать исходные коды пакета.

     25.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи

Превращаем робот-пылесос в универсального солдата

Все началось с увлечения глубоким обучением, нейронными сетями и далее по списку. Я посмотрел пару курсов, поучаствовал в соревновании на Kaggle… "чем бы еще заняться?". Тут мимо как раз по своим делам проползал робот-пылесос (Xiaomi Vacuum Cleaner V1) и подкинул интересную идею…

     25.11.2019       Выпуск 310 (25.11.2019 - 01.12.2019)       Статьи
     23.11.2019       Выпуск 309 (18.11.2019 - 24.11.2019)       Статьи
     22.11.2019       Выпуск 309 (18.11.2019 - 24.11.2019)       Статьи

Django. Создание динамических настроек сайта с помощью SingletonModel

Допустим, вы создаёте сайт с CMS на основе Django, у которого должны быть какие-то динамические настройки сайта, которые будут доступны пользователю. Например, название сайта, какая-то специализированная информация, при этом вы учитываете возможность мультиязычности. То что тогда можно использовать для этого? Мне пришла мысль использовать базу данных.

Для реализации этого требуется следующее:

  1. Создание модели данных, которая всегда будет содержать только один объект, то есть только одну запись. То есть это будет Singleton Model.
  2. Запретить удалять данную запись и создавать новые в панели администрирования Django
  3. Возможность использования иноформации из этой модели прямо в шаблоне, без загрузки настроек сайта в view функции.

Давайте разберёмся по порядку, как это реализовать.

 

     22.11.2019       Выпуск 309 (18.11.2019 - 24.11.2019)       Статьи

Как добавить пользовательские кнопки в Django Admin

В этой статье “шпаргалке” рассмотрено добавление пользовательских кнопок в интерфейс Django Admin. В первой части рассказано как добавить одно кнопку на страницу списка выбранной модели – list view. Например кнопку импорта чего либо. Во второй части рассказано как добавить пользовательские кнопки действий (actions) для каждой выбранной записи отдельно с дополнительными формами.