Що саме ви можете зробити з Python? Ось 3 основні програми Python.

Якщо ви думаєте вивчити Python - або якщо ви нещодавно почали його вивчати - можливо, ви запитуєте себе:

"Для чого саме я можу використовувати Python?"

Ну, на це каверзне запитання відповісти, оскільки для Python існує дуже багато додатків.

Але з часом я помітив, що існує 3 основні популярні програми для Python:

  • Веб-розробка
  • Data Science - включаючи машинне навчання, аналіз даних та візуалізацію даних
  • Сценарії

Давайте поговоримо про кожного з них по черзі.

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

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

Ці веб-фреймворки допомагають створювати серверний код (серверний код) у Python. Це код, який працює на вашому сервері, на відміну від пристроїв та браузерів користувачів (інтерфейсний код). Якщо ви не знайомі з різницею між серверним кодом та кодом інтерфейсу, будь ласка, дивіться мою виноску нижче.

Але почекайте, навіщо мені веб-фреймворк?

Це тому, що веб-фреймворк полегшує побудову загальної логіки серверного сервера. Сюди входить відображення різних URL-адрес у фрагменти коду Python, робота з базами даних та створення HTML-файлів, які користувачі бачать у своїх браузерах.

Який веб-фреймворк Python мені слід використовувати?

Django і Flask - два найпопулярніші веб-фреймворки Python. Я рекомендую використовувати один із них, якщо ви тільки починаєте.

Яка різниця між Django та Flask?

На цю тему є чудова стаття Гарета Дуайера, тож дозвольте її процитувати тут:

te>

Основні контрасти:

  • Колба забезпечує простоту, гнучкість і дрібнозернистий контроль. Він є неініціативним (дозволяє вирішити, як ви хочете реалізувати речі).
  • Django пропонує всеосяжний досвід: ви отримуєте адміністративну панель, інтерфейси баз даних, ORM [об'єктно-реляційне відображення] та структуру каталогів для ваших програм та проектів.

Ймовірно, вам слід вибрати:

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

te>

Іншими словами, якщо ви новачок, Flask, мабуть, є кращим вибором, оскільки в ньому менше компонентів, з якими можна боротися. Крім того, Flask - кращий вибір, якщо ви хочете більше налаштувати.

З іншого боку, якщо ви хочете побудувати щось прямо, Django, ймовірно, дозволить вам швидше туди дістатися.

Тепер, якщо ви хочете вивчити Django, я рекомендую книгу Django для початківців. Ви можете знайти його тут.

Ви також можете знайти безкоштовні зразки розділів цієї книги тут.

Добре, перейдемо до наступної теми!

Data Science - включаючи машинне навчання, аналіз даних та візуалізацію даних

Перш за все, давайте розглянемо , що машинне навчання є .

Я думаю, що найкращим способом пояснити, що таке машинне навчання, було б дати вам простий приклад.

Скажімо, ви хочете розробити програму, яка автоматично визначає, що є на зображенні.

Отже, враховуючи це зображення нижче (Малюнок 1), ви хочете, щоб ваша програма визнала, що це собака.

Original text


Враховуючи цей інший нижче (Малюнок 2), ви хочете, щоб ваша програма визнала, що це таблиця.

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

Або, можливо, ви можете зрозуміти, як виявити краї на зображенні. Тоді, можна сказати, якщо є багато прямих країв, то це стіл.

Однак такий підхід досить швидко стає хитрим. Що робити, якщо на знімку біла собака без каштанового волосся? Що робити, якщо на малюнку зображені лише круглі частини столу?

Тут з’являється машинне навчання.

Машинне навчання, як правило, реалізує алгоритм, який автоматично виявляє шаблон у даному введенні.

Скажімо, ви можете передати 1000 зображень собаки та 1000 зображень таблиці в алгоритм машинного навчання. Потім він дізнається різницю між собакою та столом. Коли ви дасте йому нове зображення собаки або столу, він зможе розпізнати, який це.

Я думаю, це дещо схоже на те, як дитина пізнає нові речі. Як дитина дізнається, що одна річ схожа на собаку, а інша - на стіл? Можливо, з купи прикладів.

Ви, мабуть, прямо не говорите дитині: "Якщо щось пухнасте і має світло-каштанове волосся, то це, мабуть, собака".

Напевно, ви просто сказали б: «Це собака. Це теж собака. А цей - стіл. Це теж стіл ".

Алгоритми машинного навчання працюють приблизно однаково.

Ви можете застосувати ту саму ідею до:

  • рекомендаційні системи (думаю, YouTube, Amazon та Netflix)
  • розпізнавання обличчя
  • розпізнавання голосу

серед інших додатків.

Популярні алгоритми машинного навчання, про які ви могли чути, включають:

  • Нейронні мережі
  • Глибоке навчання
  • Підтримка векторних машин
  • Випадковий ліс

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

Python для машинного навчання

Існують популярні бібліотеки машинного навчання та фреймворки для Python.

Два найпопулярніші - scikit-learn та TensorFlow .

  • scikit-learn поставляється з деякими найпопулярнішими вбудованими алгоритмами машинного навчання. Деякі з них я згадав вище.
  • TensorFlow - це швидше бібліотека низького рівня, яка дозволяє створювати власні алгоритми машинного навчання.

Якщо ви тільки починаєте з проекту машинного навчання, я б рекомендував спочатку розпочати з scikit-learn. Якщо ви почнете стикатися з проблемами ефективності, я б почав вивчати TensorFlow.

Як я повинен навчитися машинному навчанню?

Щоб вивчити основи машинного навчання, я б порекомендував курс машинного навчання в Стенфорді чи в Caltech.

Зверніть увагу, що вам потрібні базові знання обчислення та лінійної алгебри, щоб зрозуміти деякі матеріали цих курсів.

Тоді я б практикував те, що ви дізналися на одному з цих курсів з Кагглом. Це веб-сайт, де люди змагаються, щоб створити найкращий алгоритм машинного навчання для даної проблеми. У них також є гарні підручники для початківців.

А як щодо аналізу даних та візуалізації даних?

Щоб допомогти вам зрозуміти, як це може виглядати, дозвольте навести тут простий приклад.

Скажімо, ви працюєте в компанії, яка продає деякі товари в Інтернеті.

Тоді, як аналітик даних, ви можете намалювати гістограму, подібну до цієї.

З цього графіку ми можемо зрозуміти, що чоловіки придбали понад 400 одиниць цього товару, а жінки придбали близько 350 одиниць цього товару в цю неділю.

Як аналітик даних, ви можете запропонувати кілька можливих пояснень цієї різниці.

Одне очевидне можливе пояснення полягає в тому, що цей продукт користується більшою популярністю серед чоловіків, ніж серед жінок. Іншим можливим поясненням може бути те, що обсяг вибірки занадто малий, і ця різниця була спричинена випадково. І ще одним можливим поясненням може бути те, що чоловіки, як правило, купують цей товар більше лише в неділю з якихось причин.

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

Замість того, щоб показувати дані лише за неділю, ми розглядаємо дані протягом цілого тижня. Як ви можете бачити, на цьому графіку ми бачимо, що ця різниця досить стійка в різні дні.

З цього невеликого аналізу ви можете зробити висновок, що найбільш переконливим поясненням цієї різниці є те, що цей продукт просто більш популярний серед чоловіків, ніж серед жінок.

З іншого боку, що, якщо замість цього ви побачите такий графік?

Тоді, чим пояснюється різниця в неділю?

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

Отже, це спрощений приклад того, як може виглядати аналіз даних у реальному світі.

Робота з аналізу даних, яку я виконував, працюючи в Google і Microsoft, була дуже схожа на цей приклад - лише більш складна. Я фактично використовував Python в Google для такого роду аналізу, тоді як я використовував JavaScript в Microsoft.

Я використовував SQL в обох цих компаніях, щоб витягувати дані з наших баз даних. Тоді я б використовував або Python і Matplotlib (у Google), або JavaScript та D3.js (у Microsoft) для візуалізації та аналізу цих даних.

Аналіз / візуалізація даних за допомогою Python

Однією з найпопулярніших бібліотек для візуалізації даних є Matplotlib.

Це хороша бібліотека для початку, оскільки:

  • Почати з цього просто
  • Деякі інші бібліотеки, такі як Seaborn, базуються на ньому. Отже, вивчення Matplotlib допоможе вам пізніше вивчити ці інші бібліотеки.

Як мені навчитися аналізу / візуалізації даних за допомогою Python?

Спочатку слід вивчити основи аналізу та візуалізації даних. Коли я шукав хороші ресурси для цього в Інтернеті, я не міг знайти жодного. Отже, у підсумку я зробив відео на YouTube на цю тему:

Я також закінчив повний курс з цієї теми з Pluralsight, який ви можете взяти безкоштовно, підписавшись на їх 10-денну безкоштовну пробну версію.

Я б рекомендував їх обох.

Після вивчення основ аналізу даних та візуалізації, корисним буде також вивчення основ статистики з таких веб-сайтів, як Coursera та Khan Academy.

Сценарії

Що таке сценарії?

Сценарії зазвичай стосуються написання невеликих програм, призначених для автоматизації простих завдань.

Отже, дозвольте навести вам приклад з мого особистого досвіду тут.

Раніше я працював у невеликому стартапі в Японії, де у нас була система підтримки електронної пошти. Це була система для нас, щоб відповідати на запитання, які клієнти надсилали нам по електронній пошті.

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

Ми могли зробити це вручну, але натомість я написав просту програму / простий сценарій для автоматизації цього завдання.

Насправді, ми використовували для цього Ruby, але Python також є гарною мовою для такого роду завдань. Python підходить для цього типу завдань, головним чином тому, що він має відносно простий синтаксис і його легко писати. Також швидко написати щось маленьке з ним і протестувати.

А як щодо вбудованих програм?

Я не фахівець із вбудованих програм, але я знаю, що Python працює з Rasberry Pi. Це здається популярним додатком серед любителів обладнання.

А як щодо ігор?

Ви можете використовувати бібліотеку під назвою PyGame для розробки ігор, але це не найпопулярніший ігровий механізм. Ви можете використати його для побудови хобі-проекту, але я особисто не став би його вибирати, якщо ви серйозно ставитесь до розробки ігор.

Навпаки, я б порадив розпочати роботу з Unity з C #, який є одним з найпопулярніших ігрових механізмів. Це дозволяє створити гру для багатьох платформ, включаючи Mac, Windows, iOS та Android.

А як щодо настільних додатків?

Ви можете зробити один із Python, використовуючи Tkinter, але це теж не здається найпопулярнішим вибором.

Натомість здається, що такі мови, як Java, C # та C ++, є більш популярними для цього.

Нещодавно деякі компанії також почали використовувати JavaScript для створення робочих програм.

Наприклад, настільний додаток Slack був побудований з чимось, що називається Electron. Це дозволяє створювати настільні програми з JavaScript.

Особисто, якби я створював настільний додаток, я б вибрав опцію JavaScript. Це дозволяє повторно використовувати частину коду з веб-версії, якщо вона у вас є.

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

Python 3 або Python 2?

Я б порекомендував Python 3, оскільки він є більш сучасним і на сьогодні є більш популярним варіантом.

Примітка: Примітка про внутрішній код проти зовнішнього коду (на випадок, якщо ви не знайомі з умовами):

Скажімо, ви хочете зробити щось на зразок Instagram.

Потім вам потрібно буде створити інтерфейсний код для кожного типу пристроїв, які ви хочете підтримувати.

Ви можете використовувати, наприклад:

  • Свіфт для iOS
  • Java для Android
  • JavaScript для веб-браузерів

Кожен набір коду буде працювати на кожному типі пристрою / браузера. Це буде набір коду, який визначає, яким буде макет додатка, як повинні виглядати кнопки при натисканні на них тощо.

Однак вам все одно знадобиться можливість зберігати інформацію та фотографії користувачів. Ви захочете зберегти їх на своєму сервері, а не лише на пристроях своїх користувачів, щоб послідовники кожного користувача могли переглядати його фотографії.

Тут з’являється внутрішній код / ​​код на стороні сервера. Вам потрібно буде написати трохи внутрішнього коду, щоб виконати такі дії:

  • Відстежуйте, хто за ким стежить
  • Стискайте фотографії, щоб вони не займали так багато місця
  • Рекомендуйте фотографії та нові облікові записи кожному користувачеві за допомогою функції виявлення

Отже, це різниця між бекенд-кодом та інтерфейсним кодом.

До речі, Python - не єдиний вдалий вибір для написання внутрішнього коду / коду на стороні сервера. Є багато інших популярних варіантів, включаючи Node.js, який базується на JavaScript.

Сподобалась ця стаття? Тоді вам також може сподобатися мій канал YouTube.

У мене є освітній канал програмування YouTube під назвою CS Dojo з понад 440 000 підписників, де я створюю більше вмісту, як ця стаття.

Наприклад, вам можуть сподобатися такі відео:

У будь-якому разі, дякую, що прочитали мою статтю!