Где и как применить Python на практике? Три основные сферы его применения. Часть 1

NOP
NOP::Nuances of Programming
5 min readJul 9, 2018

Перевод статьи YK Sugi: What exactly can you do with Python? Here are Python’s 3 main applications

Если вы собираетесь изучать такой язык программирования, как Python, или уже изучаете — у вас может возникнуть резонный вопрос:

«Для решения каких конкретных задач я могу использовать Python?»

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

Но не волнуйтесь, по мере роста моих знаний в этой области, я выделил 3 основных способа применения для Python, и сейчас я поделюсь ими:

  • Веб-разработка
  • Анализ и работа с данными, а именно: машинное обучение, анализ и визуализация данных
  • Скриптинг

Теперь поговорим о каждом из них.

Веб-разработка

Веб-фреймворки, основанные на языке Python, например, Django и Flask, в последнее время стали крайне популярными в веб-разработке.

Эти фреймворки помогают написать бэкенд-код на Python. Код работает на вашем сервере, а не в браузерах и устройствах пользователей, как это делает фронтенд-код. Если не знаете, в чем разница между фронтенд-кодом и бэкенд-кодом — читайте вторую часть нашей статьи.

Но подождите, зачем мне эти веб-фреймворки?

Используя данные веб-фреймворки, можно значительно упростить себе работу по написанию веб-приложений. Они позволяют реа­ли­зовать любые биз­нес-про­цессы, помогают в рефакторинге старых сайтов, упрощают использование Ajax и многое другое.

Какой фреймворк я должен взять на вооружение?

Django и Flask — два самых популярных веб-фреймворка на Python. Если вы новичок, я бы рекомендовал использовать один из них.

В чем разница между Django и Flask?

За меня на этот вопрос ответит статья Гарета Дуайера. Возьму смелость процитировать её:

<begin quote>

Основные различия:

  • Flask минималистичен, прост в использовании и гибок, а также у него отсутсвуют какие-либо ограничения.
  • Django похож на тариф «Все включено». В нем есть админ-панель, интерфейс базы данных, ORM (объектно-реляционное отображение) и структура каталогов для готовых приложений и проектов.

Вам стоит выбрать:

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

</end quote>

Другими словами, если вы новичок — Flask лучший выбор, потому что он достаточно прост в работе. Также, Flask подходит тем, кому нужно больше кастомизации. Кроме того, по словам моего друга Джонатана Т Хо, Flask более подходит для создания REST API, чем Django. Все благодаря его гибкости в работе.

С другой стороны, если нужно что-то незамысловатое и с четко-поставленной целью — на помощь приходит Django.

Переходим к следующему пункту!

Анализ и работа с данными, а именно: машинное обучение, анализ и визуализация данных

Перво-наперво, разберемся с понятием машинное обучение.

Мне кажется, лучший способ объяснить, что же такое машинное обучение — показать все на простом примере:

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

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

Картинка № 1

Беря за основу картинку № 2, вы хотите, чтобы программа распознала на ней стол.

Картинка № 2

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

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

Вот тут-то и появляется машинное обучение

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

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

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

Вы однозначно не говорите ребенку: «Если что-то пушистое и с светло-коричневой шерстью, то это собака». Вы просто говорите: «Это собака. Просто собака. А это стол. И вот это тоже стол»

Алгоритмы машинного обучения работают точно так же.

Это можно применить:

  • Система рекомендаций (в YouTube, Netflix, Amazon)
  • Распознавание лиц
  • Распознавание голоса
  • И многое другое

Популярные алгоритмы машинного обучения, о которых вы, возможно, слышали:

  • Нейронные сети
  • Глубокое обучение
  • Метод опорных векторов
  • Алгоритм «случайный лес»

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

Python для машинного обучения

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

Два самых популярных это scikit-learn и TensorFlow.

  • scikit-learn встроен в некоторые из наиболее популярных алгоритмов машинного обучения. Некоторые из них я упомянул выше.
  • TensorFlow — это библиотека более низкого уровня, которая позволяет создавать кастомные алгоритмы машинного обучения.

Если вы только начинаете работать с проектами по машинному обучению — вам пригодится scikit-learn. А в случае, если вам захочется увеличить эффективность программы или приложения — рекомендую TensorFlow.

Как мне следует начать изучать машинное обучение?

Чтобы понять основы машинного обучения, я советую вам пройти курс Стэндфордского университета или Калифорнийского технологического института.

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

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

На этом все, читайте продолжение во второй части статьи!

--

--