27 шпаргалок по машинному обучению и Python в 2020


Оглавление (нажмите, чтобы открыть):

Создание машинно-обучаемого классификатора с помощью Scikit-learn в Python

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

Сейчас существует очень много приложений для машинного обучения. Netflix и Amazon используют машинное обучение для отображения новых рекомендаций. Банки используют его для обнаружения мошеннической деятельности в транзакциях с кредитными картами, а медицинские компании начинают использовать машинное обучение для мониторинга, оценки и диагностики пациентов.

Данный мануал поможет реализовать простой алгоритм машинного обучения в Python с помощью инструмента Scikit-learn. Для этого мы будем использовать базу данных о раке молочной железы и классификатор Naive Bayes (NB), который предсказывает, является ли опухоль злокачественной или доброкачественной.

Требования

Для работы вам понадобится локальная среда разработки Python 3 и предварительно установленное приложение Jupyter Notebook. Это приложение очень полезно при запуске экспериментов по машинному обучению: оно позволяет запускать короткие блоки кода и быстро просматривать результаты, легко тестировать и отлаживать код.

Настроить такую среду вам помогут следующие мануалы:

1: Импорт Scikit-learn

Для начала нужно установить модуль Scikit-learn. Это одна из лучших и наиболее документированных библиотек Python для машинного обучения.

Чтобы начать работу над проектом, разверните среду разработки Python 3. Убедитесь, что вы находитесь в каталоге, в котором хранится эта среда, и выполните следующую команду:

После этого проверьте, не был ли модуль Sckikit-learn установлен ранее.

python -c «import sklearn»

Если модуль sklearn установлен, команда выполнится без ошибок. Если модуль не установлен, вы увидите ошибку:

Traceback (most recent call last): File » «, line 1, in ImportError: No module named ‘sklearn’

Чтобы загрузить библиотеку, используйте pip:

pip install scikit-learn[alldeps]

После завершения установки запустите Jupyter Notebook:

В Jupyter создайте документ ML Tutorial. В первую ячейку документа импортируйте модуль sklearn.

Теперь можно начать работу с набором данных для модели машинного обучения.

2: Импорт наборов данных

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

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

Scikit-learn поставляется с несколькими наборами данных, включая этот. Импортируйте и загрузите набор данных. Для этого добавьте в документ:

.
from sklearn.datasets import load_breast_cancer
# Load dataset
data = load_breast_cancer()

Переменная data содержит словарь, важными ключами которого являются названия классификационных меток (target_names), метки (target), названия атрибутов (feature_names) и атрибуты (data).

Читайте также:

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

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

.
# Organize our data
label_names = data[‘target_names’]
labels = data[‘target’]
feature_names = data[‘feature_names’]
features = data[‘data’]

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

.
# Look at our data
print(label_names)
print(labels[0])
print(feature_names[0])
print(features[0])

Запустите код, чтобы увидеть результат.

Как видно в выводе, имена классов — malignant и benign, которые затем отображаются как двоичные значения 0 и 1, где 0 представляет собой злокачественные, а 1 – доброкачественные опухоли. Согласно выводу, первый экземпляр данных представляет собой злокачественную опухоль, средний радиус которой равен 1.79900000e+01.

Загрузив данные, можно начать работу над классификатором.

3: Систематизация данных в наборы

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

Тренировочный набор можно использовать для обучения и оценки модели на этапе разработки. Готовую обучаемую модель затем можно применить к тестовому набору данных. Такой подход дает вам представление о производительности и надежности модели.

Модуль sklearn предоставляет функцию train_test_split(), которая автоматически разделит данные на два набора.

.
from sklearn.model_selection import train_test_split
# Split our data
train, test, train_labels, test_labels = train_test_split(features,
labels,
test_size=0.33,
random_state=42)

Функция случайным образом разбивает данные с помощью параметра test_size. Теперь у вас есть тестовый набор (test), который представляет 33% от исходного набора данных. Оставшиеся данные (train) составляют тренировочный набор. Также теперь есть соответствующие метки как для переменных train_labels и test_labels

4: Сборка и оценка модели

Существует много моделей для машинного обучения, и каждая модель имеет свои преимущества и недостатки. В этом мануале мы рассмотрим простой алгоритм, который обычно хорошо выполняется в задачах бинарной классификации, а именно в Naive Bayes (NB).

Импортируйте модуль GaussianNB. Инициализируйте модель с помощью функции GaussianNB(), а затем потренируйте модель, применив ее к данным с помощью gnb.fit():

.
from sklearn.naive_bayes import GaussianNB
# Initialize our classifier
gnb = GaussianNB()
# Train our classifier
model = gnb.fit(train, train_labels)

После этого можно применить подготовленную модель, чтобы сделать прогнозы на тестовом наборе данных, который используется с помощью функции predict(). Функция predict() возвращает массив предполагаемых результатов для каждого экземпляра данных в тестовом наборе. Затем можно вывести все прогнозы.

Используйте функцию predict() в наборе test и отобразите результат:

.
# Make predictions
preds = gnb.predict(test)
print(preds)

В выводе Jupyter Notebook вы увидите, что функция predict() возвращает массив из 0 и 1, которые представляют предсказанные программой результаты.

5: Оценка точности модели

С помощью массива меток класса можно оценить точность прогнозируемых значений модели, сравнив два массива (test_labels и preds). Чтобы определить точность классификатора машинного обучения, можно использовать функцию accuracy_score().

.
from sklearn.metrics import accuracy_score
# Evaluate accuracy
print(accuracy_score(test_labels, preds))

Судя по результатам, данный классификатор NB имеет точность 94,15%. Это означает, что 94,15% ситуаций он оценивает правильно и может предсказать результат.

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

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# Load dataset
data = load_breast_cancer()
# Organize our data
label_names = data[‘target_names’]
labels = data[‘target’]
feature_names = data[‘feature_names’]
features = data[‘data’]
# Look at our data
print(label_names)
print(‘ > print(feature_names)
print(features[0])
# Split our data
train, test, train_labels, test_labels = train_test_split(features,
labels,
test_size=0.33,
random_state=42)
# Initialize our classifier
gnb = GaussianNB()
# Train our classifier
model = gnb.fit(train, train_labels)
# Make predictions
preds = gnb.predict(test)
print(preds)
# Evaluate accuracy
print(accuracy_score(test_labels, preds))

Теперь вы можете продолжить работу с этим кодом и усложнить свой классификатор. Вы можете экспериментировать с различными подмножествами функций или попробовать другие алгоритмы. Больше идей машинного обучения можно найти на сайте Scikit-learn.

Почему Python используется для машинного обучения?

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

Python считается самым простым языком программирования — именно поэтому он самый распространенный. Посмотрите на график ниже. Он предсказывает, какие языки будут использоваться чаще всего к 2020 году:

Помимо простоты, у Python есть еще один плюс — он довольно легко взаимодействует с другими языками, особенно с C и C++. Теперь давайте разберемся, почему Python активно используется в машинном обучении.

Почему Python так часто используется в машинном обучении?

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

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

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

Согласно исследованию Hackerrank Stat 2020, «среди работодателей самым востребованным языком программирования является JavaScript, однако среди разработчиков наибольшую любовь завоевал Python, о чем говорит наше исследование Love-Hate index».

Большой выбор библиотек и фреймворков

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

Давайте обсудим, какие именно библиотеки и фреймворки Python используются в машинном обучении. В научных расчетах используется Numpy, в продвинутых вычислениях — SciPy, в извлечении и анализе данных — SciKit-Learn. Эти библиотеки работают в таких фреймворках, как TensorFlow, CNTK и Apache Spark.

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

Понятность

Python — самый высокоуровневый и понятный язык, с которым удобно работать. Благодаря его лаконичности и удобству чтения он хорошо подходит для обучения разработке ПО.

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

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

Обширная поддержка

Еще одно преимущество Python — это обширная поддержка и качественная документация. Существует множество полезных ресурсов о Python, на которых программист может получить помощь и консультацию, находясь на любом этапе разработки.

Гибкость

Следующее преимущество Python в машинном обучении состоит в его гибкости: например, у разработчика есть выбор между объектно-ориентированным подходом и скриптами. Python помогает объединять различные типы данных. Более того, Python особенно удобен для тех разработчиков, которые большую часть кода пишут с помощью IDE.

Популярность

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

Заключение

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

27 шпаргалок по машинному обучению и Python в 2020

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

На курсе вы научитесь:

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

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

  • Целые числа, ввод-вывод, простые операции со строками
  • Условный оператор и цикл while
  • Вещественные числа
  • Функции и рекурсия
  • Кортежи, цикл for, списки
  • Сортировка
  • Множества и словари
  • Функциональное программирование
  • Классы

Материалы курса доступны бесплатно, но для получения сертификата нужно заплатить 1901 рублей.

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

27 лучших шпаргалок по машинному обучению и Python в 2020

27 шпаргалок по машинному обучению и Python в 2020

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

Комментарии (21)

Илья Макаров

Посоветуйте кто-нибудь пожалуйста для студента колледжа материал по Arduino C

Иван Благовестный

Илья, готовься уворачиваться от тухлых помидоров)

Илья Макаров

Иван, я уже привык,спасибо что предупредил

Андрей Рудин

Сергей Лазарев


Андрей, но все же они работают

Андрей Рудин

Сергей, на ограниченном круге задач 🙁

Сергей Лазарев

Андрей, ну человеческий мозг, тоже знаешь ли не все сразу умел

Андрей Рудин

Сергей, вернее не работают на ограниченном круге задач, который мне нужен ((

Сергей Лазарев

Андрей, ну вот люди же до 2digital17 года как-то развивали разные сферы без нейросетей.

Андрей Рудин

Сергей, без нейросетей не интересно )) я хочу с нейросетями

Olga Meteliza

DELETED

Андрей, а тебе приходилось работать с нейросетями, писать их и тд?

Андрей Рудин

Дима, к чему вопрос?

DELETED

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

Андрей Рудин

Дима, а, не, у меня специфическая область, в которой они эти сети работают (((

DELETED

Андрей, на бирже играешь что ли?

Андрей Рудин

Дима, хуже, ставки на спорт 😉

DELETED

Андрей, вау) прикольная тема, я когда-то думал попробовать с нейросетями такое замутить, но за неимением опыта и времени отложил на потом

Андрей Рудин

Дима, ну и в общем правильно, даже не пытайся )

DELETED

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

Андрей Рудин

Дима, нет, на уровне статистики.

О проекте

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

Знакомство с машинным обучением в Python

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

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

Знакомство с машинным обучением

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

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

Мастер Йода рекомендует:  SEO — всё по этой теме для программистов

Существуют различные этапы в машинном обучении:

  1. сбор данных
  2. сортировка данных
  3. анализ данных
  4. вырабатывание алгоритма
  5. проверка выработанного алгоритма
  6. использование алгоритма для дальнейших выводов

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

  • управляемое обучение
  • самостоятельное обучение

Управляемое обучение

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

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

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

Управляемое обучение включает только два этапа:

Некоторые алгоритмы управляемого обучения включают:

  • схемы принятия решений
  • методы опорных векторов (схожие алгоритмы обучения)
  • вероятностный классификатор на основе теоремы Байеса
  • метод k-ближайших соседей
  • линейную регрессию

Пример

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

Кроме того Sklearn хорошо взаимодействует с библиотеками NumPy и SciPy.

Установка Sklearn

Инструкция по установке Sklearn предлагает очень простой способ установки для различных платформ. Для работы библиотеки требуется несколько зависимостей:

Если эти зависимости уже установлены, то можно установить Sklearn, просто выполнив команду:

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

Чтобы проверить, что Sklearn работает корректно, просто импортируйте эту библиотеку в интерпретаторе языка Python:

Если это не вызвало ошибок, значит все готово к работе.

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

Сперва нам необходимо собрать исходные данные для каждого вида животного. Некоторые исходные данные представлены в таблице ниже.

Рост(см) Вес (кг) Температура (гр. Цельсия) Название
18 0.6 40 Курица (0)
18 0.6 41 Курица (0)
94 600 37 Лошадь (1)
94 600 38 Лошадь (1)

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

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

Сначала импортируем модуль tree из Sklearn.

Теперь определим набор характеристик, по которым будем классифицировать животных.

Определим результат, который будет давать каждый набор значений. Пусть курица будет представлена результатом 0, а лошадь — результатом 1.

Далее определяем классификатор, который будет основываться на схеме принятия решения.

Передаем наши данные классификатору.

Полный код этого алгоритма представлен ниже.

Теперь мы можем предполагать определенный набор данных. Мы пробуем определить животное ростом 18 сантиметров, весом 0.6 кг и температурой 41 градус следующим образом:

А вот так мы пробуем определить животное ростом 94 см, весом 600 кг и температурой 37.5 градусов:

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

Самостоятельное обучение

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

Самостоятельное обучение может далее подразделяться на:

Кластеризация: Кластеризацией называют органичное группирование данных. Например, можно сгруппировать покупательские предпочтения клиентов и использовать их в рекламе, показывая только те объявления, которые соответствуют их покупкам или предпочтениям.

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

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

  • кластеризацию k-средних
  • иерархическую кластеризацию

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

Заключение

Я надеюсь, что данный урок помог вам начать свое знакомство с машинным обучением. Это всего лишь введение, ведь эта тема очень обширна, и мы рассмотрели лишь малую часть того, на что способно машинное обучение.

Также хочу предложить вам смело переходить по ссылке на Envato Market — нам есть, что предложить вам для приобретения и изучения, а также не стесняйтесь задавать любые вопросы или оставлять ваши ценные отзывы ниже.

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

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

PYML: Practical Python Machine Learning

Курс: «Practical Python Machine Learning»

Ближайшая дата курса
20,27 июня (1 день в неделю)
Стоимость обучения 72.000 рублей

В ходе курса слушатели не только познакомятся с основными концепциями и лучшими практиками в машинном обучении, но и научатся решать следующие задачи:

  1. Кластеризация пользователей с целью создания уникального предложения для каждой группы пользователей.
  2. Прогноз оттока (Churn rate) пользователей.
  3. Скоринг клиентов на возврат займа.

Особенности курса:

  1. Упор идет не на теорию, а на практику и применимость в реальном бизнесе.
  2. Вся теория подкреплена реальными данными из бизнеса.
  3. В конце каждой темы задания на проверку материала. Каждый слушатель получает индивидуальный фидбек от преподавателя.
  4. Курс включает самостоятельную работу с заданиями и проводится 1 раз в неделю

Аудитория


Продуктовые и бизнес-аналитики, руководители, инженеры данных.

Предварительный уровень подготовки

  • Понимание основ статистики, высшей математики
  • Опыт работы с Python

Продолжительность: 4 дня, 32 академических часа

Методические материалы: учебное пособие на русском языке

Программа курса

Неделя 1: Python Machine Learning для анализа данных.

  • Что такое Jupyter и Anaconda.
  • Основные структуры данных в Python.
  • Операторы и управляющие конструкции.
  • Функции и классы.
  • Библиотека pandas для анализа данных.
  • Визуализация данных в Python.
  • Домашнее задание:exploratorydataanalysis на реальном датасете.

Неделя 2: Основные концепции в машинном обучении на Python.

  • Какие бывают задачи машинного обучения.
  • Как оценивать качество алгоритма: разбор метрик качества в задачах классификации и регрессии, их связь и решение бизнес-задачи.
  • Что такое валидация, какие бывают типы валидации.
  • Что такое регуляризация.
  • Работа с категориальными и пропущенными признаками.
  • Градиентный спуск – краеугольный камень всего машинного обучения.
  • Тест на понимание концепций.

Неделя 3: Основные алгоритмы Python Machine Learning.

  • Линейная регрессия, L1/L2 регуляризация.
  • Обобщения линейной регрессии: квантильная регрессия, полиномиальная регрессия, логистическая регрессия.
  • Метод k-ближайших соседей
  • Деревья принятия решений, регуляризация деревьев, модификации деревьев: bagging, random forests, boosting.
  • Реализуем каждый из алгоритмов на реальном датасете, сравниваем их предсказательную силу.
  • Домашнее задание: самостоятельно произвести сравнение всех пройденных алгоритмов на других данных.

Неделя 4: Обучение без учителя, продвинутые подходы к работе с признаками, финальный проект.

  • Алгоритмы кластеризации, их оценка и область применения в реальном бизнесе.
  • Обзор подходов к feature engineering/feature selection.
  • Использование генетических алгоритмов для создания новых признаков.
  • Продвинутые подходы к mean target encoding.
  • Создание композиций алгоритмов: blending, stacking.
  • Объединяем полученные знания для построения production-ready модели скоринга.
  • Домашнее задание: реализация полного цикла data science проекта: EDA; формализация задачи; выбор метода валидации и метрики качества; генерация, оценка и отбор признаков; оценка и выбор модели, эксперименты с композициями моделей.

Related Posts:

Расписание курсов

Новое на сайте

Отзывы на Google

Обучался на курсе HADM администрирование кластера Arenadata Hadoop. Интересный курс, хорошая подача.

Обучался на курсе по администрированию Apache Kafka. Хорошая подача материала, интересные практические задачи. Возникающие вопросы доходчиво и ясно объясняют. Остался очень доволен. read more

Был на курсе «Администрирование кластера Hadoop». Отличная подача материала. Очень много практики и технических подробностей. Подробный обзор стека технологий, платформы и инструментов. Рекомендую! read more

Учился на курсе Администрирование Hadoop. Курс вёл Николай Комиссаренко. Отлично подготовленная, продуманная, системная программа курса. Практические занятия организованы так, что у студентов есть возможность познакомиться с реальными особенностями изучаемого продукта. Отключил голову и прощёлкал лабы по книжке — здесь не работает. Преподаватель легко и развёрнуто отвечает на возникающие вопросы не только по теме предмета, но и по смежным. read more

Прошёл курс по администрированию Apache Kafka. Очень понравилась как подача материала, так и структура курса. Только вот времени маловато оказалось. не всё успел доделать, но это уже не к курсу претензии :). Практики было довольно много, и это хорошо read more

Прошёл курс «Hadoop для инженеров данных» у Николая Комиссаренко. Информация очень актуальна и полезна, заставляет задуматься о текущих методах работы с большими данными в нашей компании и, возможно, что-то поменять. Занятия с большим количеством практики, поэтому материал хорошо усваивается. Отдельное спасибо Николаю за то, что некоторые вещи объяснял простым языком, понятным даже для «чайников» в области Hadoop. read more

I did not find any disadvantages in the course. Pluses: + A lot of practice (50% of the time). + The teacher can explain difficult topics easy way. + Announced topics were considered. Besides additional materials were studied.

Посетил курс администрирование Hadoop. На курсе устанавливали кластер с нуля на виртуалках в облаке Amazon. Настраивали Kerberos, тестировали выполнение задач на кластере, управление ресурсами кластера. Т.к. кластер развернут в облаке, после завершения занятий можно самостоятельно работать с кластером из дома. Лекции вел Николай Комиссаренко, после обучения предоставил все материалы. На занятиях отвечал на дополнительные вопросы, рассмотрели как решить пару живых задач от студентов. Хороший курс для начала изучения BigData. Update Дополнительно прошел обучения по Airflow и NiFi. Курсы двух дневные упор на занятиях делался на использовании продуктов, администрированию уделялось меньше времени. Т.к. курсы короткие, то перед занятиями желательно почитать обзорные статьи по продуктам, чтобы не терять время на базовое погружение и задавать более предметные вопросы. Перед началом занятий желательно связаться с школой и запросить что больше интересуется на обучении. Может быть предложить свои кейсы, чтобы на лабораторных отработать не только общий функционал. read more

Был на основах хадупа, все материалы описаны доступным языком. В частности хочу отметить преподавателя Николая Комисаренко, как очень квалифицированного преподавателя и специалиста. read more

Отличные курсы по «Администрированию Hadoop» и отличная организация проведения занятий, все по делу и понятно. Очень понравилось, знания получены основательные. Материал подаётся основательно. Постараюсь ещё попасть на другие курсы. read more

Курс по Isilon у Николая Комиссаренко мне тоже понравился. Грамотный и отзывчивый. Возникали вопросы по курсу он отвечал на все вопросы. Спасибо. Успехов ему

Посетил курс администрирование Hadoop. На курсе устанавливали кластер с нуля на виртуалках в облаке Amazon. Настраивали Kerberos, тестировали выполнение задач на кластере, управление ресурсами кластера. Т.к. кластер развернут в облаке, после завершения занятий можно самостоятельно работать с кластером из дома. Лекции вел Николай Комиссаренко, после обучения предоставил все материалы. На занятиях отвечал на дополнительные вопросы, рассмотрели как решить пару живых задач от студентов. Хороший курс для начала изучения BigData. read more

Эффективный практический курс. Прошел курс Администрирование Hadoop в октябре 2020. Хорошо наполненный материал, оптимальная длительность курса и все делалось своими руками. Местами было непросто, но преодолимо. Оправдал все ожидания, после курса появилось целостное понимание создания и работы кластера. Николай, большое спасибо read more

Прошёл курс по администрированию Hadoop Cloudera. Отличная «живая» подача материала на «простом» языке. Как плюс работа с кластером построена на платформе AWS. На курсах не скучно, рекомендую! read more

Я узнал много нового посетив курс уважаемого Николая Комиссаренко по айзелону. Очень грамотный специалист обучение было очень полезным и грамотным. Спасибо вам большое read more

Python и Машинное обучение

John Dillinger

John Dillinger

Archi

Archi

Scvair

Scvair

Автор Похожие темы Раздел Комментариев Дата публикации
Udemy [Udemy] Машинное обучение на Python: Проекты, Подсказки, Решения проблем (2020) Udemy.com 14 Май 2020
Прикладной анализ текстовых данных на Python. Машинное обучение и создание приложений обработки естественного языка Пожелания по материалам 2 25 Мар 2020
Книги, литература [Бастиан Шарден и др.] Крупномасштабное машинное обучение вместе с Python (2020) Компьютерная литература 25 Фев 2020
Книги, литература Python для сложных задач. Наука о данных и машинное обучение Книги, литература 10 Мар 2020
Программирование WEB-разработчик на Python Администрирование и программирование 1 Мар 2020

Похожие темы

  • Автор: BonAqua
  • 14 Май 2020
  • Ответы: 0
  • Автор: Drewleks
  • 25 Мар 2020
  • Ответы: 2
  • Автор: Loksley
  • 25 Фев 2020
  • Ответы: 0
  • Автор: Arsenn32
  • 10 Мар 2020
  • Ответы: 0
  • Автор: Arsenn32
  • 1 Мар 2020
  • Ответы: 0

О НАС

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


Python

print(«Non scholae sed vitae discimus»)

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

Почему вы стали изучать Python?

Алексей Зобнин, доцент базовой кафедры «Яндекса» факультета компьютерных наук

По очень необычной причине. В 2008 году в недавно открывшейся Школе анализа данных «Яндекса» я читал курс по программированию. Мы изучали со студентами язык C++. И вдруг от Ильи Сегаловича, технического директора «Яндекса», поступила просьба посвятить несколько занятий на курсе языку Python. Я до того момента на «Питоне» не программировал и вообще мало что о нем слышал, хотя язык этот довольно старый, он появился в самом начале 1990-х. Я прочитал книжку про «Питон», и мне этот язык очень понравился.

Через год, когда я стал разработчиком в «Яндексе», меня приятно удивило, как широко этот язык распространен там внутри. Помню еще такой случай. Как-то я присутствовал со своим руководителем на одном собеседовании, и мой начальник задал кандидату такой вопрос. Пусть требуется выполнить какие-то действия по обработке или преобразованию текстовых файлов – извлечь информацию, подсчитать статистики, записать в структурированном виде ответ и т.д., причем эти действия не настолько тривиальны, что их можно записать как комбинацию стандартных консольных утилит Unix. Какой язык программирования вы бы стали использовать? Кто-то мог бы ответить «Perl» (да, он был достаточно популярен в то время), кто-то воспользовался бы старым добрым «Паскалем» или тем же C++, но стремительно набиравший тогда популярность «Питон» подходил для этой цели идеально.

Борис Орехов, доцент школы лингвистики факультета гуманитарных наук

Я начал изучать Python благодаря тому, что в моей предметной области – лингвистике и анализе данных – используют именно этот язык. Сейчас на многих языках программирования можно написать программу, которая делает что угодно. Языки в базовой комплектации почти равны по возможностям и выразительности. Выбор определяют дополнительные модули, подключаемые библиотеки, которые облегчают выполнение какой-либо задачи. Python в этом смысле очень заботливый язык: он берет на себя большую часть рутины. Есть даже известная шутка, уже встроенная в язык: если специальным образом написать и выполнить в Python несложный код, то откроется браузер с веселой картинкой, на которой человек летит в небе, а другой удивленно спрашивает его, как ему удается летать. Первый отвечает, что точно не знает, как так вышло, он просто подключил в Python специальный модуль для полетов, а остальное получилось само.

Такие «магические» модули в Python есть и для многих стандартных лингвистических задач, для машинного обучения и многого другого, что постоянно нужно и мне, и нашим студентам-лингвистам. Так что, если ты знаешь Python, ты во многих смыслах становишься как Гарри Поттер. Во-первых, потому, что тебе доступна магия программирования, во-вторых, ты теперь «змееуст», если вспомнить, к какому подотряду чешуйчатых относятся питоны. Хотя название языка не биологического происхождения, оно восходит к британской комик-группе Monty Python, так что Python – это еще и весело.

Когда я начал учить Python, я уже неплохо знал Perl, R, SQL, основы веб-программирования, немного PHP. После свободного стиля, который свойствен всем этим языкам, дисциплина Python показалась мне волнующей и прекрасной. Сразу захотелось переписать на нем все то, что я уже находил в Perl и PHP.

Кроме того, начало занятий Python совпало для меня с тем, что я поступил на работу в Вышку и оказался в среде людей, которые тоже писали на Python. Это важно: когда я работал с Perl, вокруг меня не было единомышленников, и даже довольно приличное Perl-комьюнити в интернете этого не меняет. Когда оказываешься в особенной среде, это сильно стимулирует личностный рост и позволяет быстрее находить верные решения.

Михаил Густокашин, приглашенный преподаватель департамента больших данных и информационного поиска факультета компьютерных наук

В 2009 году я занимался подготовкой школьников к олимпиадам по информатике и собственно проведением олимпиад: составлением задач, подготовкой тестов и т.п.

Тогда большинство учителей использовало Pascal для обучения программированию (в принципе, это верно и сейчас), но для олимпиадных задач он подходил плохо: подводило отсутствие стандартной библиотеки с удобно реализованными алгоритмами и структурами данных. Для олимпиад больше подходил язык C++, но в нем некоторые даже простые операции выполнялись с помощью довольно монструозных конструкций. Например, чтобы просто пройти по последовательности чисел и напечатать ее, нужно было написать что-то в стиле:

for (std::vector ::iterator it = v.begin(); it != v.end(); ++it)

std::cout Андрей Паринов, старший преподаватель департамента анализа данных и искусственного интеллекта факультета компьютерных наук

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

Мое знакомство с Python началось в 2008 году. Меня заинтересовали алгоритмы кластеризации и классификации, построение рекомендаций, генетические алгоритмы и т.д. Большую часть алгоритмов сейчас рассматривают как часть машинного обучения. На глубоком уровне задачи и алгоритмы я изучил в книгах и работах известных ученых – Бориса Григорьевича Миркина, Сергея Олеговича Кузнецова, Константина Вячеславовича Воронцова.

Стоит ли начинать обучаться программированию именно на Python?

Алексей Зобнин

«Священный» спор о том, каким должен быть первый язык программирования, не прекращается уже десятки лет. У меня первыми языками в середине 90-х были BASIC и Pascal. В середине двухтысячных я вел занятия по информатике в школе, и мы программировали там на PascalABC (тогда еще без .NET). Знаю многих людей, которые предлагают в качестве первого языка изучать JavaScript. Но теперь я за Python! Трудно придумать язык, так похожий на «псевдокод» (что бы мы ни обозначали этим словом). Создатели «Питона» руководствовались «принципом наименьшего удивления»: конструкции языка должны означать именно то, что в основном ожидали бы от них программисты, впервые их увидевшие. Не на последнем месте среди аргументов этого спора и моя любимая фишка языка, объявляющая отступы строк программы обязательной частью синтаксиса. Знаю, насколько тяжело бывает научить школьников расставлять отступы в программе, чтобы обозначить ее структуру. А тут отступы – это необходимая часть языка.

Если говорить о самых маленьких школьниках, то для них в «Питоне» есть прекрасный модуль turtle, реализующий «черепашью графику» из языка «Лого».

Борис Орехов

Дидактический аспект занимает многих теоретиков и профессиональных программистов. Тому, с какого языка стоит начинать обучение, посвящен довольно широкий круг материалов. И многие из них действительно рекомендуют именно Python. Он не только простой, он еще и предоставляет вам максимально короткий путь от первой учебной программы (у программистов это традиционно вывод на экран приветствия мира “Hello World!”; мы, конечно, предлагаем студентам-лингвистам приветствовать мир на башкирском или на исландском: “һаумы, донъя!” или “Sæll, heimur!”) до программы, которая делает что-то полезное. Хотя лично мой путь в программирование был другим и начинался с PHP, в школе у меня не складывалось со многими предметами, которые предполагали решение каких-то общих задач, условия которых оторваны от практического, наблюдаемого. Поэтому я до сих пор не люблю игры: выигрыш в них ни к чему не ведет, это не созидательный процесс. Для людей моего темперамента Python очень подходит: можно начинать делать что-то полезное уже после первого занятия. А есть специальные учебные языки программирования вроде Logo, которые для такого практико-ориентированного пути не предназначены совсем.

Но есть и альтернативные точки зрения. Так, некоторые молодые программисты из провинции обиженно пишут, что в их регионе трудно найти первую работу, если ты знаешь только Python (в Москве и Санкт-Петербурге с этим проблем, кажется, нет). Но сам Python в этом не виноват.

Михаил Густокашин

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

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

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

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

Андрей Паринов

На сегодняшний день Python де-факто является основным языком для анализа данных и машинного обучения. Он поддерживает различные библиотеки для анализа данных. Библиотеки NumPy и SciPy содержат классы и функции для быстрых и точных вычислений. Библиотека ScikitLearn содержит алгоритмы машинного обучения. Библиотека NLTK содержит функции для работы с текстами. Библиотеки PyTorch позволяет обучать нейронные сети с использование GPU.

Долгое время единственным вариантом для анализа данных было использование дорогих больших программных пакетов, таких как SAS, SPSS и STATA. Несмотря на удобство и высокий уровень качества, стоимость мешала их широкому распространению. Начиная с 80-х годов разрабатывались свободные пакеты для анализа данных. В 2000-х различные инициативы по разработке свободных пакетов для анализа данных были поддержаны Google, Microsoft, Boeing и другими. К 2010 году наиболее функциональными стали платформы на основе языка R и языка Python.

Однако, по версии авторитетного рейтинга TIOBE, Python занимает в большинстве рейтингов 4-е место после Java и С/C++.

На сегодня существует более десятка популярных методологий сравнения. Основные источники для сравнения: запросы в Google, проекты на Github, объявления о поиске сотрудников, научные статьи, авторские методики, опросы программистов. Область сравнений – год, страна, целевая платформа.

Пять наиболее авторитетных рейтингов сходятся во мнении, что Python входит в пятерку самых популярных языков программирования. Лишь рейтинг журнала IEEE Spectrum считает Python самым популярным языком программирования в 2020 году в США.

Все дело в том, что на данный момент уже существует множество промышленных проектов, которые реализованы не на Python. До сих пор С++ и Java занимают лидирующие позиции в рейтингах именно по причине необходимости поддержки кода существующих проектов. Существующие проекты надо поддерживать и развивать. Переписывать их полностью на любом другом языке – слишком дорогое занятие.

Таким образом, при выборе языка программирования стоит обратить внимание на задачи, которые планируется решать с его помощью. На сегодняшний день Python 3 – прекрасный выбор для разработки программ, связанных с анализом данных и машинным обучением.

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

Алексей Зобнин

Для того чтобы новый язык стал популярным, недостаточно просто взять и придумать хороший синтаксис и реализовать транслятор. Необходима экосистема: наличие удобных библиотек, удобных средств разработки и, главное, большого сообщества активных пользователей. «Питон» набрал эту критическую массу где-то во второй половине двухтысячных. Он уверенно занимает свою нишу высокоуровневого скриптового языка общего пользования, где акцент сделан на производительности программиста и на читаемости кода. Язык особенно популярен у специалистов по машинному обучению и тех, кто работает с большими данными. Удобная интерактивная оболочка IPython Notebook позволяет прямо в браузере создавать документы с фрагментами кода на «Питоне» и результатами их выполнения с возможностью перезапустить каждый фрагмент независимо. Библиотеки numpy, scipy, matplotlib, pandas и т.д. позволяют обрабатывать и визуализировать научные и статистические данные. Упомяну и широко известные библиотеки для обучения нейронных сетей TensorFlow, Theano, Keras, также имеющие основную реализацию на «Питоне».

Я часто использую систему компьютерной алгебры SageMath. Этот замечательный проект оказался столь успешным еще и потому, что в качестве языка в этой системе был выбран «Питон» (правда, с немного расширенным синтаксисом). Это демонстрирует еще одну сферу применения «Питона» в качестве встраиваемого в другие системы языка программирования или как скриптового языка для расширения возможностей других приложений. Например, на нем можно писать макросы для LibreOffice.

Бессмысленно сравнивать этот язык с занимающими совсем другую нишу С/C++ – я люблю говорить, что эти языки ортогональны друг другу. Например, для больших распределенных серверных приложений «Питон» вряд ли подойдет.

Я в своей работе использую и C++, и «Питон», и у меня часто бывают курьезные машинальные ошибки, когда переключаешься с одного языка на другой. Например, мне надо было уменьшить переменную на единицу, и я написал в «Питоне» —x. А потом удивлялся, почему это программа запустилась и работает, но вовсе не так, как ожидается.

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

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

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

Борис Орехов

Тема сильных и слабых сторон Python в профессиональной среде обсуждается давно и подробно. Тут нет секретов. Python ценят за скорость разработки: полезную и полнофункциональную программу на нем можно написать в среднем быстрее, чем на C или Java, но работать она будет в среднем медленнее. Эта «медленность», конечно, будет ощущаться только при обработке по-настоящему больших массивов данных, которые появились в распоряжении лингвистов не так давно. В то же время вопросом остается, что сейчас обходится дороже – машинное время или время программиста? Иными словами, для финального успеха важнее быстро написать программу, которая работает немного медленнее, или долго писать программу, которая потом все сделает быстро? Я считаю, что сейчас правильнее первый подход, и Python ему полностью отвечает, не говоря уже о том, что существуют способы «разогнать» программу на Python до нужных скоростей.

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

С позиций моей субъективности важно то, что Python оказался хорошо приспособлен для работы именно с текстовыми массивами. Скажем, если я захочу компьютерно обработать текст на русском языке, то я обнаружу, что у Fortran просто нет поддержки современного способа кодировать символы, стандарта Unicode. Этот язык, как и R, предназначен скорее для того, чтобы читать и считать с его помощью уже подготовленные для анализа данные. А Python в этом смысле ничем не ограничен.

Михаил Густокашин

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

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

Андрей Паринов

Основной причиной популярности Python стала совокупность нескольких факторов: удобный и понятный синтаксис; слабая типизация; открытость; возможность подключения модулей на языке С.

Совокупность этих обстоятельств привела к возможности быстро разрабатывать программы. Высокая скорость разработки средних по размеру программ – основное преимущество Python. В то же время в крупных промышленных проектах, где над одной и той же системой трудится множество программистов, слабая типизация затрудняет поддержку кода системы, усложняет отладку и предъявляет повышенные требования к уровню разработчиков. Поэтому многие выбирают для проектов язык программирования с сильной типизаций – Java, C++, C#.

Что ждет Python в будущем, на ваш взгляд?

Алексей Зобнин

В ближайшем будущем – завершение неизбежного перехода в индустрии с версий 2.x на версии 3.x. Десять лет назад создатели языка смело выпустили версию 3.0, которая не была обратно совместима со старыми версиями, но в которой, по мнению авторов, устранялись фундаментальные недостатки предыдущих версий. Какое-то время обе ветки версий развивались параллельно. Ветку 3.x сообщество программистов приняло не сразу, ей пришлось в некотором смысле заново завоевывать популярность. Мне тогда казалось, что версии 2.x будут сходиться к числу e, а версии 3.x – к числу π. В итоге ветка 2.x навечно застыла на версии 2.7.14, а вот в третьей ветке число π давно преодолено: текущая стабильная версия имеет номер 3.6.4.

Борис Орехов

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

Количество полезного кода на Python растет, и чем больше его становится, тем более долгую жизнь языку это обеспечивает. Perl или Fortran считаются устаревшими языками, но за их длинную историю было написано много полезных программ, которые используются до сих пор, в основном в науке: Perl – до сих пор основной язык для расчетов в генетике, а Fortran никуда не уходил из астрономии и физики атмосферы. Хотя отчасти это же справедливо и для IT, и до последнего времени интерфейс почты Mail.Ru был написан на Perl, в индустрии все обновляется с высокой скоростью, несмотря даже на почти суеверный консерватизм айтишников, фиксируемый в известной поговорке: «Работает – не трогай!». Но у ученых задачи другие: нужно не заботиться о красоте кода, а добывать новое знание. С этой точки зрения, разумеется, неправильно переписывать на модном языке программы, которые и так хорошо работают. Поэтому даже если мода на Python со временем пройдет (пока признаков этого мы не видим), то ученые еще долго будут пользоваться тем, что написано для него сейчас.

Михаил Густокашин

Python дошел до той стадии популярности, что даже его «тихое угасание», если и случится, будет длиться многие годы.

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

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

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

Через 20-25 лет то же самое вполне может произойти с программированием. И вероятно, языком для такого программирования будет Python.

Андрей Паринов

На мой взгляд, язык Python ждет стабильное радужное будущее. У языка активное сообщество сторонников, большое количество проектов, постоянная поддержка со стороны крупнейших производителей ПО, стабильный спрос на программистов.

27 шпаргалок по машинному обучению и Python в 2020

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

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

Да, машинное обучение развивается семимильными шагами, и, полагаю, моя коллекция устареет, но для июня 2020 года она более чем актуальна.

Если не хотите загружать все шпаргалки по отдельности, скачайте готовый zip-архив.

Машинное обучение

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

Архитектуры Neural Network

С появлением новых архитектур нейронных сетей их стало сложно отслеживать. Большое количество сокращений (BiLSTM, DCGAN, DCIGN, а знает ли кто-то их все?) может обескуражить.

Поэтому я решил составить чит-лист, содержащий многие из этих архитектур. Большая часть относится к нейронным сетям. Есть только одна проблема в такой визуализации: не показан принцип использования. Например, вариационные автокодеры (VAE) могут выглядеть как автокодеры (AE), но процесс обучения другой.

Блок-схема алгоритмов Microsoft Azure

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

Блок-схема алгоритмов SAS

Шпаргалки с алгоритмами SAS позволят быстро найти подходящий алгоритм для решения конкретной задачи. Представленные здесь алгоритмы – результат компиляции отзывов и советов от нескольких ученых по данным, разработчиков и экспертов в области машинного обучения.

Собрание алгоритмов

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

Также список в инфографическом формате:

Алгоритм прогнозирования: «за/против»

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

Python

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

Алгоритмы Python

Это коллекция из 10 наиболее часто используемых алгоритмов машинного обучения с кодами на Python и R. Чит-лист подойдет в качестве справочника, который поможет использовать полезные алгоритмы машинного обучения.

Основы Python

Нельзя отрицать, что сегодня Python находится на подъеме. Шпаргалки включили в себя все необходимое, в том числе функции и определение объектно-ориентированного программирования на примере языка Python.

А этот чит-лист станет замечательным дополнением вступительной части любого учебника по Python:

NumPy

NumPy – это библиотека, которая позволяет Python быстро обрабатывать данные. При первом изучении могут возникнуть проблемы с запоминанием всех функций и методов, поэтому здесь собраны самые полезные шпаргалки, способные значительно облегчить изучение библиотеки. Расписаны импорт/экспорт, создание массивов, копирование, сортировка, перемещение элементов и многое другое.

А здесь дополнительно представлена теоретическая часть:

Схематическое представление некоторых данных можно найти в этом чит-листе:

Вся необходимая информация с диаграммами:

Pandas

Высокоуровневая библиотека Pandas предназначена для анализа данных. Соответствующие фреймы, панели, объекты, функционал пакета и другие необходимые сведения собраны в удобно организованном чит-листе:

Схематизированное представление информации о библиотеке Pandas:

А этот чит-лист включил в себя подробное изложение с примерами и таблицами:

Matplotlib

Если же дополнить предыдущую библиотеку Pandas пакетом matplotlib, появится возможность рисовать графики к полученным данным. Именно за построение графиков на языке Python и отвечает matplotlib. Зачастую это первый пакет, связанный с визуализацией, который используют начинающие Python-программисты, и представленные шпаргалки помогут быстро сориентироваться в функционале данной библиотеки.

Во втором чит-листе вы найдете больше примеров визуального представления графиков:

Scikit-Learn

Библиотека Python с алгоритмами машинного обучения Scikit-Learn – не самая простая в изучении, но с чит-листами принцип ее работы становится максимально понятным.

С теорией, примерами и дополнительными материалами:

TensorFlow

Еще одна библиотека для машинного обучения, но со своим функционалом и трудностями его восприятия. Ниже представлен полезный чит-лист для изучения TensorFlow:

PyTorch

Хороший инструмент для исследований и экспериментов, обеспечивающий гибкость и высокую скорость обработки данных. Шпаргалки PyTorch в основном содержат примеры и дополнительные материалы. Этот не исключение:

Шпаргалки: математика

Если вы действительно хотите понять машинное обучение, вам нужно знать статистику (особенно вероятностную), линейную алгебру и некоторые исчисления. Я думал, что умру в процессе изучения всех тонкостей, и определенно нуждался в переподготовке. Эти шпаргалки дадут большую часть того, что вам нужно знать.

Python’ом по машинлернингу. Разгребаем тонны входящей корреспонденции без участия человека

Содержание статьи

В этой статье мы хотим показать ML на практическом кейсе — на примере проекта, который мы делали для Актион-пресс (сервис онлайн-подписки). Уверен, описанное в этом примере может пригодиться многим. Почему многим? Да потому, что проблема, которую мы решали, называлась «сортировка и пересылка по адресу огромного количества электронных писем». Проблема гигантской переписки, которую менеджерам приходится сортировать и пересылать в соответствующие отделы, практически универсальная, и проблему эту надо решать современными способами.

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

Изначально статья называлась Операционализация ML-моделей Python с использованием Azure Functions. Думаю, тебе стоит узнать об этом сейчас, потому что дальше легко не будет. ��

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

Думаю, тебя не удивит, что в качестве языка для этого решения мы выбрали Python. Так сложилось исторически: он высокоуровневый, а самое важное — в нем есть множество полезных библиотек для машинного обучения. Про них я расскажу ниже.

Честно говоря, про ML в данном случае рассказывать особо нечего. Набор простых бинарных классификаторов на основе логистической регрессии показал многообещающие результаты и позволил несколько абстрагироваться от самой модели, сосредоточившись на подготовке данных и построении вложенного текста. Но сам репозиторий уже использовался как основа для трех других независимых проектов: он хорошо показал себя в нескольких классификационных экспериментах и зарекомендовал себя как надежный фундамент для быстрого перехода к разработке. Поэтому задача данного раздела заключается не в демонстрации «ноу-хау»; он нужен как основа для следующего за ним раздела, посвященного операционализации.

Здесь я поделюсь своим опытом и дам некоторые рекомендации тебе, чтобы ты мог сам поэкспериментировать с этим кодом или повторно использовать его.

Чтобы сохранить конфиденциальность, исходный набор данных был заменен аналогичным общедоступным набором для классификации отзывов о McDonalds. См. файл data/data.csv.

Сами данные были представлены в файлах CSV с тремя столбцами: Id , Text и Class . И поскольку в NLTK не предусмотрена встроенная поддержка чтения данных из файлов в формате CSV, мы написали собственный модуль, позволяющий читать файлы из папки в виде одного dataframe pandas или извлекать текст в виде списков абзацев, предложений, слов и так далее в формате NLTK.

А вот код для инициализации этого самописного модуля чтения CsvCorpusReader данными клиента. Реализацию класса можно увидеть в файле lib\corpus.py. Настоятельно рекомендую тебе ознакомиться с содержимым файла Experiments\TrainingExperiment.py.

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

Ниже мы даем экстрактору команду вернуть документы в виде списка слов, отбрасывая структуру абзацев или предложений (см. keep_levels=Levels.Nothing ). Затем переводим каждое слово в нижний регистр, отбрасываем любые стоп-слова и выделяем основы слов. На заключительном этапе удаляем низкочастотные слова, предполагая, что это просто опечатки или что они не оказывают существенного влияния на классификацию.

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

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

Мы протестировали несколько разных подходов (включая BoW, TF- >

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

Самая очевидная из них связана с тем, что письма тех типов, которые мы искали, имели предсказуемые и повторяющиеся шаблоны слов, как в случае автоответов (например, «Спасибо за ваше письмо. Меня не будет в офисе до. Если вопрос срочный. »). Поэтому для их обработки вполне достаточно чего-то простого, например TF-IDF. LSI поддерживает общую идеологию, и эту модель можно рассматривать как способ добавления синонимов, подходящих для обработки. В то же время алгоритм word2vec, прошедший обучение на Википедии, вероятно, генерирует ненужный шум из-за сложных синонимичных структур, тем самым «размывая» шаблоны в сообщениях и, следовательно, снижая точность классификации.

Этот подход показал, что старые и довольно простые методы по-прежнему стоит пробовать, даже в эпоху word2vec и рекуррентных нейронных сетей.

Как всегда, от обязательного рутинного кода избавиться невозможно. Дальше он нам пригодится при подготовке данных для машинного обучения с применением scikit-learn.

Как я уже говорил выше, мы используем несколько бинарных вместо одного многоклассового классификатора. Именно поэтому создаем бинарную цель для одного из классов (в этом образце это SlowService). Ты можешь изменять значение переменной class_to_find и выполнять приведенный ниже код повторно, чтобы обучить каждый одноклассовый классификатор в отдельности. Скрипт оценки сделан так, чтобы работать с несколькими моделями, и автоматически загружает их из выделенной папки. Наконец, формируется обучающий и тестовый набор данных, строки с пропусками при этом полностью исключаются.

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

Как ты мог заметить, в приведенном ниже коде мы придерживаемся специального формата имени модели: class_<0>_thresh_<1>.bin . Это необходимо для определения имени класса и соответствующего порогового значения в ходе дальнейшей оценки.

И последнее замечание, прежде чем мы продолжим. В качестве инструмента разработки я выбрал Visual Studio Code. Это простой в использовании легковесный редактор, который даже предоставляет базовые возможности IntelliSense (автозавершение кода и подсказки) для такого динамичного языка, как Python. В то же время расширения Jupyter и Python в сочетании с ядром IPython позволяют выполнять код поячеечно и визуализировать результат без повторного запуска скрипта, что всегда удобно для задач ML. Да, это похоже на стандартный Jupyter, но с IntelliSense и ориентацией на код/git. Я рекомендую тебе попробовать, хотя бы пока ты работаешь с образцом, поскольку для продуктивной разработки тут применяется множество других возможностей, связанных с VS Code.

Что касается кода ниже, строка с plot ROC threshold values — это примеры использования расширения Jupyter. Ты можешь нажать специальную кнопку Run cell (Выполнить ячейку) над ячейкой, чтобы увидеть значения TP и FP и сравнить их с пороговым значением Threshold на панели результатов справа. Мы активно использовали эту диаграмму во время работы, поскольку из-за выраженного дисбаланса в наборе данных оптимальный уровень отсечки всегда был около 0,04 вместо привычных 0,5. Если ты не можешь использовать VS Code для тестирования, можно просто запустить скрипт с помощью стандартных инструментов Python и после просмотра результатов в отдельном окне внести изменения непосредственно в имя файла.

Теперь настало время скрипта оценки: Score\run.py. Нового в нем очень мало, большую часть кода взяли из первоначального обучающего эксперимента, рассмотренного ранее. Ознакомься с содержимым этого файла в репозитории GitHub.

На вход подается файл CSV для оценки, на выходе получаем два разных файла, один содержит оцененные классы, другой — идентификаторы строк, оценить которые не представляется возможным. Я объясню причину использования файла позже, когда будем говорить об операционализации.

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

Ты даже можешь опробовать код прямо сейчас, используя собственные данные со своего локального ПК, и совсем без операционализации:

  • клонируй репозиторий, следуй инструкциям по развертыванию локальной среды Anaconda и установи Visual Studio Code с нужным расширением;
  • помести свои данные в поддерживаемом формате в файл data\data.csv и открой файл Experiment\TrainingExperiment.py , чтобы обучить модель на любом классе, который ты хочешь оценить;
  • не забудь предварительно удалить всю папку models , поскольку в противном случае код попытается повторно использовать преобразования и модели из образца;
  • перейди к Score\run.py , замени данные в файле Score\debug\input.csv собственными и построчно выполни скрипт с помощью расширения Jupyter.

В VS Code ты даже можешь открыть раздел отладки Debug (Ctrl + Alt + D), выбрать Score (Python) в качестве конфигурации и нажать Start Debugging (Выполнить отладку), чтобы провести построчный анализ кода в редакторе. Когда алгоритмы завершат свою работу, результаты можно будет найти в файлах input.scores.csv и input.unscorable.csv в папке Score\debug .

Реализовал интересный проект? Думаешь, что он стоит того, чтобы поделиться им с читателями? Пиши нам в Хакер, крутую статью сделаем!

Мастер Йода рекомендует:  Имитация фотосъемки с проводкой
Добавить комментарий