• Самая крутая библиотека для Data Science, которую я нашёл в 2021 году

    • Translation
    • Tutorial

    Больше никогда не тратьте время на настройку гиперпараметров




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

    Если вам также нравится автоматизировать скучные вещи, вам понравится библиотека, которую я собираюсь рассмотреть в этой статье.
    Приятного чтения!
  • Атаки на JSON Web Tokens


      Содержание:


      • Что такое JWT?
        • Заголовок
        • Полезная нагрузка
        • Подпись
        • Что такое SECRET_KEY?
      • Атаки на JWT:
        • Базовые атаки:
          1. Нет алгоритма
          2. Изменяем алгоритм с RS256 на HS256
          3. Без проверки подписи
          4. Взлом секретного ключа
          5. Использование произвольных файлов для проверки
        • Продвинутые атаки:
          1. SQL-инъекция
          2. Параметр поддельного заголовка
          3. Внедрение заголовка ответа HTTP
          4. Прочие уязвимости

      Что такое JSON Web Token?


      Веб-токен JSON обычно используется для авторизации в клиент-серверных приложениях. JWT состоит из трех элементов:


      • Заголовок
      • Полезная нагрузка
      • Подпись

      Заголовок


      Это объект JSON, который представляет собой метаданные токена. Чаще всего состоит из двух полей:


      • Тип токена
      • Алгоритм хэширования

      Официальный сайт предлагает два алгоритма хэширования:


      • «HS256»
      • «RS256»
      Читать дальше →
    • Использование текстовых и извлеченных числовых признаков в задаче классификации комментариев



        Как выглядят данные?


        Во-первых, посмотрим на имеющиеся тестовые и тренировочные данные (данные соревнования «Toxic comment classification challenge» на платформе kaggle.com). В тренировочных данных, в отличии от тестовых, имеются метки для классификации:


        Рисунок 1 — Train data head

        Из таблицы видно, что мы имеем в тренировочных данных 6 столбцов-меток («toxic», «severe_toxic», «obscene», «threat», «insult», «identity_hate»), где значение «1» свидетельствует о принадлежности комментария к классу, также присутствует столбец «comment_text», содержащий комментарий и столбец «id» – идентификатор комментария.

        Читать дальше →
      • Быстрый градиентный бустинг с CatBoost

        • Translation
        Привет, хабровчане! Подготовили перевод статьи для будущих учеников базового курса Machine Learning.





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


        Источник
        Читать дальше →
      • Python API в Delta Lake — простые и надежные операции Upsert и Delete

        • Translation

        Delta Lake 0.4.0 включает Python API и преобразование Parquet в таблицу Delta Lake на месте

        Мы рады объявить о релизе Delta Lake 0.4.0, в котором представлен Python API, улучшающий манипулирование и управление данными в Delta-таблицах. Ключевыми фичами этого релиза являются:

        - Python API для DML и служебных операций (#89) - теперь вы можете использовать Python API для обновления(update)/удаления(delete)/слияния(merge) данных и выполнения служебных операций (а именно, vacuum и history) в таблицах Delta Lake. Они отлично подходят для создания сложных рабочих нагрузок в Python, например, операций медленно меняющихся измерений (SCD - Slowly Changing Dimension), слияния изменений данных для репликации и операций upsert из потоковых запросов. Для получения более подробной информации читайте документацию.

        - Convert-to-Delta (#78) - теперь вы можете преобразовать таблицу Parquet в таблицу Delta Lake на месте без перезаписи каких-либо данных. Эта функция отлично подходит для преобразования очень больших таблиц Parquet, которые было бы довольно затратно перезаписывать в Delta-таблицу. Более того, этот процесс обратим - вы можете преобразовать таблицу Parquet в таблицу Delta Lake, поработать с ней (например, удалить или объединить) и легко преобразовать ее обратно в таблицу Parquet. Для получения более подробной информации читайте документацию.

        - SQL для служебных операций - теперь вы можете использовать SQL для выполнения служебных операций vacuum и history. Смотрите документацию для получения дополнительных сведений о том, как настроить Spark для выполнения этих специфичных для Delta Lake команд SQL.

        Больше информации вы можете найти в примечаниях к релизу Delta Lake 0.4.0 и в документации по Delta Lake > Удаление, обновление и слияние таблиц.

        Читать далее
      • Как я узнал о тайных услугах Мегафона

          Добрый день всем!

          Началось всё с того, что поздно вечером мне позвонила девушка из Мегафона и пролепетала что-то про скидочные купоны-талоны, которые появятся в моём личном кабинете. Мол, это просто партнерская программа и она не хочет, чтобы я пропустил такую прекрасную возможность.
          Читать дальше →
        • Совершеннолетняя журналистика: от России до Кремля

            Анализ публикаций Lenta.ru за 18 лет (с сентября 1999 по декабрь 2017 гг.) средствами python, sklearn, scipy, XGBoost, pymorphy2, nltk, gensim, MongoDB, Keras и TensorFlow.



            В исследовании использованы данные из поста «Анализируй это — Lenta.ru» пользователя ildarchegg. Автор любезно предоставил 3 гигабайта статей в удобном формате, и я решил, что это прекрасная возможность протестировать некоторые методы текстовой обработки. Заодно, если повезёт, узнать что-то новое о российской журналистике, обществе и вообще.

            Читать дальше →
          • Голосовой бот + телефония на полном OpenSource. Часть 2 — учим бота слушать и говорить


              В первой части статьи я описал как создать простого чат бота, в этой статье мы научим нашего бота говорить и слушать русскую речь и переводить ее в текст.
              Читать дальше →
              • +10
              • 6.8k
              • 5
            • Shodan — темный близнец Google


                Источник
                S in IoT stands for Security
                Про Shodan уже не раз писали, в том числе и здесь. Я хочу предложить еще раз пробежаться по возможностям этого замечательного инструмента и принципам его работы. Сразу хочу оговориться, ситуация с этим поисковиком вполне классическая для исследователей в области информационной безопасности — инструмент может использоваться как с благими намерениями, так и сильно за чертой закона.

                Disclamer:
                Использование самого поисковика не является чем-то наказуемым. Успешный вход в незакрытую панель управления узла нефтяного терминала где-то в Сингапуре и эксперименты с открыванием заслонок — уже наказуемы. Могут прийти и постучаться недружелюбные люди. Поэтому будьте благоразумны и уважайте чужое пространство. Мы против применения Shodan для чего-то кроме исследовательских целей или анализа собственных систем.

                Предлагаю еще раз пройтись по возможностям этого поисковика, особенностям его синтаксиса и попробовать найти что-то интересное. И давайте не будет печатать «Войну и Мир» на чужих сетевых принтерах.
                Читать дальше →
              • Напишем и поймем Decision Tree на Python с нуля! Часть 1. Краткий обзор

                • Translation
                Привет, Хабр! Представляю вашему вниманию перевод статьи "Pythonで0からディシジョンツリーを作って理解する (1. 概要編)".

                1.1 Что такое Decision Tree?


                1.1.1 Пример Decision Tree


                Например, у нас есть следующий набор данных (дата сет): погода, температура, влажность, ветер, игра в гольф. В зависимости от погоды и остального, мы ходили (〇) или не ходили (×) играть в гольф. Предположим, что у нас есть 14 сложившихся вариантов.



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



                Например, если посмотреть на Decision Tree, изображенный на картинке выше, мы поймем, что сначала проверяли погоду. Если было ясно, мы проверяли влажность: если она высокая, то не шли играть в гольф, если низкая — шли. А если погода была облачная, то шли играть в гольф вне зависимости от других условий.
                Читать дальше →
                • +12
                • 9.5k
                • 8
              • Мониторинг демон на Asyncio + Dependency Injector — руководство по применению dependency injection

                • Tutorial
                Привет,

                Я создатель Dependency Injector. Это dependency injection фреймворк для Python.

                Это еще одно руководство по построению приложений с помощью Dependency Injector.

                Сегодня хочу показать как можно построить асинхронный демон на базе модуля asyncio.

                Руководство состоит из таких частей:
                Читать дальше →
              • Пишем веб сервис на Python с помощью FastAPI

                • Tutorial
                image

                Знаю, знаю, наверное вы сейчас думаете «что, опять?!».

                Да, на Хабре уже неоднократно писали о фреймворке FastAPI. Но я предлагаю рассмотреть этот инструмент немного подробнее и написать API своего собственного мини Хабра без кармы и рейтингов, зато с блэкджеком и с тестами, аутентификацией, миграциями и асинхронной работой с БД.
                Читать дальше →
              • 10 вещей, которые вы могли не знать о scikit-learn

                • Translation
                В этой переведенной статье ее автор, Rebecca Vickery, делится интересными функциями scikit-learn. Оригинал опубликован в блоге towardsdatascience.com.


                Фото с сайта Unsplash. Автор: Sasha • Stories

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

                Этот проект, разработанный Дэвидом Курнапо (David Cournapeau), появился на свет в рамках программы Google Summer of Code и был выпущен в 2010 году. С момента своего создания библиотека превратилась в инфраструктуру с широкими возможностями для создания моделей машинного обучения. Новые функции позволяют решать еще больше задач и повышают удобство использования. В этой статье я расскажу о десяти самых интересных функциях, о которых вы могли не знать.
                Читать дальше →
              • Краткий обзор NLP библиотеки SpaСy

                Обработка естественного языка(Natural Language Processing — NLP) сегодня становится очень востребованной, так как людям несомненно проще общаться с машинами также, как они общаются с людьми.


                image


                Поэтому сейчас, вместе с быстрым развитием этой области, всё больше сервисов используют NLP: чат-боты, в которых больше не нужно выбирать готовые ответы, голосовые ассистенты, электронная почта, чтобы автоматически сортировать письма и так далее. В этом посте я хочу рассказать об относительно новой Python библиотеке SpaCy, которая стала, если не индустриальным стандартом, как кричат заявляют сами создатели на сайте библиотеки: https://spacy.io/, то как минимум одним из самых популярных и удобных решений. Приятного чтения!

                Читать дальше →
                • +11
                • 8.2k
                • 8
              • Визуализация новостей рунета



                  Представьте себе, что вы поспорили с друганом, что было раньше — курица или яйцо повышение какого-то налога, к примеру, или новости на эту тему, или вовсе важное событие заглушили тучей новостей про новую песню, скажем, Киркорова. Удобно было бы посчитать, сколько новостей на каждую тему было в каждый конкретный момент времени, а потом наглядно это представить. Собственно, этим и занимается проект “радар новостей рунета”. Под катом мы расскажем, при чём здесь машинное обучение и как любой доброволец может в этом поучаствовать.
                  Читать дальше →
                • Шпаргалка по визуализации данных в Python с помощью Plotly

                  Plotly — библиотека для визуализации данных, состоящая из нескольких частей:

                  • Front-End на JS
                  • Back-End на Python (за основу взята библиотека Seaborn)
                  • Back-End на R

                  В этой простыне все примеры разобраны от совсем простых к более сложным, так что разработчикам с опытом будет скучно. Так же эта «шпаргалка» не заменит на 100% примеры из документации.



                  Читать дальше →
                • Сравниваем работу open source Python — библиотек для распознавания именованных сущностей

                    Введение


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

                    Для решения это задачи я опробовал десятки решений в области обработки естественного языка, в том числе решения с открытым кодом и хотел бы поделиться опытом работы с open source Python — библиотеками для распознавания именованных сущностей.

                    Распознавание именованных сущностей


                    Несколько слов о самой проблеме. Named Entity Recognition (NER) — это направление технологии обработки человеческого языка, программная реализация которой позволяет находить в речи и тексте опредмеченные категории слов и словосочетаний. Сначала это были географические наименования, имена людей, организаций, адреса, однако в настоящее время это понятие сильной расширилось и с помощью NER мы ищем в тексте относительные и абсолютные даты, числа, номера и т.д.
                    Выявление именованных сущностей — это «ворота» в человеческий язык, оно позволяет выявлять и обрабатывать намерения человека, устанавливать связи слов в его речи и реальным миром.

                    Читать дальше →
                    • +37
                    • 8.6k
                    • 9
                  • Выращиваем ИИ — Генетические алгоритмы: введение

                    • Tutorial


                    (сгенерированое изображение)


                    Существует множество способов создать искусственную нейронную сеть или даже "искусственный интеллект". Но все эти способы обескураживают, от части сложностью которую я не до конца понимаю, отчасти от того, что все сводится к математическим формулам.


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

                    Читать дальше →
                    • +11
                    • 6.8k
                    • 5
                  • Ваш первый BERT: иллюстрированное руководство

                    • Translation
                    • Tutorial

                    bert-distilbert-sentence-classification


                    Прогресс в области машинного обучения для обработки естественного языка существенно ускорился за последние несколько лет. Модели покинули исследовательские лаборатории и стали основой ведущих цифровых продуктов. Хорошей иллюстрацией этому служит недавнее заявление о том, что основным компонентом, стоящим за поиском Google, стала модель BERT. Google верит, что этот шаг (т.е. внедрение передовой модели понимания естественного языка в поисковую систему) представляет собой «величайший прорыв за последние пять лет и один из знаменательнейших во всей истории поисковых систем».


                    Данная статья – это простое руководство по использованию одной из версий BERT'а для классификации предложений. Пример, рассмотренный нами, одновременно и достаточно простой для первого знакомства с моделью, и достаточно продвинутый для того, чтобы продемонстрировать ключевые концепты.


                    Помимо этой статьи был подготовлен ноутбук, который можно посмотреть в репозитории или запустить в Colab.

                    Читать дальше →
                    • +10
                    • 9.5k
                    • 3
                  • Генетический алгоритм на Python для поиска глобальных экстремумов

                    Предыстория


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



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

                    В этой небольшой статье я хотел бы поделиться процессом, наблюдениями и итогами.
                    Читать дальше →