FeatureSelector отбор признаков для машинного обучения на Python


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

Автостопом по машинному обучению на Python

Машинное обучение на подъеме, этот термин медленно забрался на территорию так называемых модных слов (buzzword). Это в значительной степени связано с тем, что многие до конца не осознают, что же на самом деле означает этот термин. Благодаря анализу Google Trends (статистике по поисковым запросам), мы можем изучить график и понять, как рос интерес к термину «машинное обучение» в течение последних 5 лет:

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

Классификация

Не стесняйтесь пропускать алгоритм, если чего-то не понимаете. Используйте это руководство так, как пожелаете. Вот список:

  1. Линейная регрессия.
  2. Логистическая регрессия.
  3. Деревья решений.
  4. Метод опорных векторов.
  5. Метод k-ближайших соседей.
  6. Алгоритм случайный лес.
  7. Метод k-средних.
  8. Метод главных компонент.

Наводим порядок

Вы явно расстроитесь, если при попытке запустить чужой код вдруг окажется, что для корректной работы у вас нет трех необходимых пакетов, да еще и код был запущен в старой версии языка. Поэтому, чтобы сохранить драгоценное время, сразу используйте Python 3.6.2 и импортируйте нужные библиотеки из вставки кода ниже. Данные брались из датасетов Diabetes и Iris из UCI Machine Learning Repository . В конце концов, если вы хотите все это пропустить и сразу посмотреть код, то вот вам ссылка на GitHub-репозиторий .

Линейная регрессия

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

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

Начало работы

Визуализация

Реализация

Логистическая регрессия

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

Теперь попробуем реализовать этот алгоритм на Python.

Начало работы

Визуализация

Реализация

Деревья решений

Метод деревьев решений (decision trees) – это один из наиболее популярных методов решения задач классификации и прогнозирования. Опыт показывает, что чаще всего данный алгоритм используется именно для классификации. На входе модель принимает набор атрибутов, характеризующих некую сущность, а затем спускается по дереву, тестируя их в зависимости от того, какие значения может принимать целевая функция. Таким образом, классификация каждого нового случая происходит при движении вниз до листа, который и укажет нам значение целевой функции в каждом конкретном случае. Деревья принятия решений становятся все более популярными и могут служить очень сильным инструментом для аналитики данных, особенно в сочетании с простыми методами композиции, такими как случайный лес, бустинг и бэггинг. И снова просмотрите видео ниже, чтобы более подробно изучить базовую функциональность деревьев решений.

А теперь по традиции перейдем к практике и реализуем данный алгоритм на Python.

Начало работы

Реализация

Визуализация

Метод опорных векторов

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

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

И по традиции реализация на Python.

Начало работы

Реализация

Визуализация

Метод k-ближайших соседей

K-Nearest Neighbors , или KNN, представляет собой контролируемый алгоритм обучения, который используется преимущественно для решения задач классификации. Данный алгоритм наблюдает за разными центрами (центроидами) и сравнивает расстояние между ними, используя для этого различные функции (обычно евклидово расстояние). Затем определяется, к какому классу принадлежит большинство ближайших объектов обучающей выборки – к этому классу относится и неизвестный объект. Посмотрите видео для того, чтобы увидеть что происходит за кулисами данного алгоритма.

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

Начало работы

Визуализация

Реализация

Случайный лес

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

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

Начало работы

Реализация

Метод k-средних

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

Теперь, когда вы знаете чуть больше о кластеризации k-средних, давайте реализуем алгоритм на Python.

Начало работы

Реализация

Визуализация

Метод главных компонент

PCA (Principal Component Analysis) — алгоритм сокращения размерности, который может быть очень полезен для аналитиков. Главное — это то, что данный алгоритм может значительно уменьшить размерность данных при работе с сотнями или даже тысячами различных функций. Данный алгоритм не контролируется, но пользователь должен анализировать результаты и следить за тем, чтобы сохранялось 95% или около этой цифры первоначального набора данных. Не забудьте про видео, ведь оно расскажет намного больше об этом интересном алгоритме.

Реализация на Python.

Начало работы

Реализация

Подводим итоги

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

Алгоритмы Machine Learning в Python

Наиболее распространенными инструментами Data Scientist’а на сегодняшний день являются R и Python. У каждого инструмента есть свои плюсы и минусы, но неплохую позицию по всем параметрам занимает Python. Для Питона есть отлично документированная библиотека Scikit-Learn, в которой реализовано большое количество алгоритмов машинного обучения.

Здесь мы остановимся на алгоритмах Machine Learning. Первичный анализ данных лучше обычно проводится средствами пакета Pandas, разобраться с которым можно самостоятельно. Итак, сосредоточимся на реализации, для определенности полагая, что на входе у нас есть матрица обьект-признак, хранящаяюся в файле с расширением *.csv

Загрузка данных

В первую очередь данные необходимо загрузить в оперативную память, чтобы мы имели возможность работать с ними. Сама библиотека Scikit-Learn использует в своей реализации NumPy массивы, поэтому будем загружать *.csv файлы средствами NumPy. Загрузим один из датасетов из репозитория UCI Machine Learning Repository:

Data Science — 8 главных библиотек для Python программиста

Data science, или наука о данных, набирает все большую популярность среди самых востребованных профессий современного рынка. Специалист в этой области должен обладать глубокими разносторонними знаниями, как теоретическими, так и практическими. К услугам начинающих аналитиков данных предлагаются инструменты автоматизированного характера с уже заложенным функционалом, как, например, мощное программное обеспечение Weka. Однако, многие data scientist-ы, предпочитая широту и манёвренность действий, создают собственные инструменты и пайплайны. Язык программирования Python как нельзя лучше подходит для этих целей. Возможности Python позволяют написать программу для задач машинного обучения как с чистого листа, так и с использованием различных библиотек и инструментов. О последних мы и поговорим.

Обработка больших данных с помощью библиотек Pandas, CSV и OpenPyXL

Чаще всего в задачах для бизнеса исходные данные предоставляются в формате .xlsx или .xlsm, однако многие предпочитают формат .csv (файлы, в которых каждая строка представлена полями, разделенными каким-либо знаком — обычно запятой или точкой с запятой).

Библиотека Pandas — один из самых популярных инструментов Python для работы с данными, она поддерживает различные текстовые, бинарные и sql форматы файлов, в том числе .xlsx , .xls и .csv . Для работы с файлами Excel Pandas использует модули xlrd и xlwt.

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

OpenPyXL — это библиотека для работы исключительно с Excel-файлами, такими как .xlsx, .xlsm, .xltx, .xltm для версий Excel от 2010 года и новее. OpenPyXL содержит инструменты для чтения, записи и обработки данных указанных форматов, а также для построения графиков.

Разберем на примерах базовые возможности этих инструментов. Мы будем использовать данные с портала Kaggle об участниках Олимпийских игр за 120 лет.

FeatureSelector: отбор признаков для машинного обучения на Python

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

About
Platform
Made by @FCK_RKN_bot Лучший прокси-бот для Telegram

Приложение для перевода художественной литературы
tl — веб-приложение с открытым кодом на Gitlub.

tl является кроссплатформенным. С его помощью перевод художественных текстов может быть в разы удобнее: изменяемый объект разбивается на фрагменты, в одной колонке располагается оригинал, а в другой — перевод.

​​Прими участие в бесплатном интенсиве по Data Science и освой Machine Learning с нуля.

✔️ Настроим рабочее окружение.
✔️ Проведем экспресс-введение в Python.
✔️ Построим модель от начала до конца.

��Лучшие участники получат грант на 30 000 рублей для обучения в Skillbox!

Сделай шаг к профессии мечты!

Райффайзенбанк ищет на оплачиваемую стажировку для фанатов своего дела.
Выбери свое направление среди Data Science, Engineering, Data Quality, IT Security и получи:
�� Год в компании профи, которые обучат тебя всем фишкам
�� Участие в тренингах и курсах
�� Возможность создавать самые лучшие технологические продукты

Поспеши! Регистрация заканчивается 10 ноября!


Next generation retail на мероприятии X5 Retail Group

21 ноября соберёмся на X5 Tech Future Night, чтобы обсудить настоящее и будущее цифровизации рынка, больших данных и инноваций, проведём анализ различных экспертных подходов, дискуссию о возможностях применения современных технологий в российском ритейле, тематические батлы, а также rock afterparty с голосованием за лучшую музыкальную команду из ведущих цифровых компаний.

Приглашенные теоретики и практики готовы обмениваться деловыми контактами, разбирать кейсы Next Generation Retail, делиться опытом оценки и ведения проектов и вместе с гостями определять тренды цифровизации бизнеса.

Билеты и доступ к онлайн-трансляции по ссылке: https://prglb.ru/2vfwj

Свой успешный бизнес: на чём зарабатывают пользователи Hacker News?
Хотите начать собственный бизнес, но не решаетесь? Держите 7 историй из жизни: пользователи Hacker News делятся секретами успеха и трудностями своего дела.
�� �� ��

Хочешь стать крутым программистом, но не хватает навыков и знаний?

�� Инновационный центр Ай-Теко проводит набор в школу разработчиков Java и тестировщиков.

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

���� Узнай подробности и успей зарегистрироваться на курс здесь: https://prglb.ru/4jnk8

Открытые Linux-бенчмарки: для нагрузочного тестирования серверов и веб-приложений
Это — подборка утилит, составленная на основе рекомендаций резидентов Hacker News и GitHub. В список вошли: Locust, Vegeta, Slow_cooker, k6 и Siege. Ими пользуются инженеры из DICE, EA и Buoyant, а также разработчики Kubernetes и Load Impact. Расскажем об этих инструментах.

Автоматическое распознавание автомобильных номеров на Raspberry Pi
Рассказываем, как самостоятельно создать компактную систему автоматического распознавания номеров автомобилей на одной плате Raspberri Pi с библиотекой OpenALPR.

«Инфраструктурная платформа на основе Kubernetes» — профессиональный онлайн-курс от OTUS. Чтобы присоединиться к новой группе, нужно пройти вступительное тестирование на сайте: https://otus.pw/0TmP/

Для кого? Для разработчиков, администраторов и технических лидеров.

Если вы ответите «да» хотя бы на один вопрос, то это ваш курс:
— устали тратить время на автоматизацию?
— хотите единообразные окружения?
-хотите развиваться и использовать современные инструменты?
— небезразлична надежность инфраструктуры?
— приходится масштабировать инфраструктуру под растущие потребности бизнеса?
— хотите освободить продуктовые команды от части задач администрирования и автоматизации и сфокусировать их на развитии продукта?

Хотите подробностей? Приходите 27 ноября онлайн на день открытых дверей курса: https://otus.pw/XjWT/

Сдавайте вступительный тест и присоединяйтесь к новому набору!

Машинное обучение Python. Data Science Machine Learning Tutorial

Опубликовано Шамаев Иван в 30.10.2020 30.10.2020

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

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

Аудитория

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

Предпосылки

Читатель должен иметь базовые знания об искусственном интеллекте. Он / она также должен знать Python, NumPy, Scikit-learn, Scipy, Matplotlib. Если вы новичок в какой-либо из этих концепций, мы рекомендуем вам изучить учебники по этим темам, прежде чем углубляться в этот учебник.

Машинное обучение с Python — Основы

Мы живем в «век данных», который обогащен лучшими вычислительными возможностями и большим объемом ресурсов хранения. Эти данные или информация растут день ото дня, но реальная задача состоит в том, чтобы разобраться во всех данных. Предприятия и организации пытаются справиться с этим путем создания интеллектуальных систем с использованием концепций и методологий из Data Science, Data Mining и Machine learning. Среди них машинное обучение — самая захватывающая область информатики. Это не было бы неправильно, если бы мы называли машинное обучение приложением и наукой об алгоритмах, которые дают смысл данным.

Что такое машинное обучение?

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

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

Потребность в машинном обучении

В настоящий момент люди являются самыми умными и продвинутыми видами на земле, потому что они могут думать, оценивать и решать сложные проблемы. С другой стороны, ИИ все еще находится на начальной стадии и не превзошел человеческий интеллект во многих аспектах. Тогда вопрос в том, что нужно сделать, чтобы машина училась? Наиболее подходящая причина для этого — «принимать решения, основываясь на данных, с эффективностью и масштабностью».

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

Зачем и когда учить машины?

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

Недостаток человеческого опыта

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

Динамические сценарии

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

Трудность в переводе экспертизы в вычислительные задачи

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

Мастер Йода рекомендует:  Инструменты для работы с частными специалистами от Яндекс.Директ

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

Прежде чем обсуждать модель машинного обучения, мы должны понять следующее формальное определение ML, данное профессором Митчеллом:

«Говорят, что компьютерная программа извлекает уроки из опыта E в отношении некоторого класса задач T и показателя P производительности, если ее производительность в задачах T, измеряемая P, улучшается с опытом E.»

Приведенное выше определение в основном сфокусировано на трех параметрах, а также на основных компонентах любого алгоритма обучения, а именно Задача (T), Производительность (P) и Опыт (E). В этом контексте мы можем упростить это определение как —

ML — это область ИИ, состоящая из алгоритмов обучения, которые —

  • Улучшить их производительность (P)
  • При выполнении некоторого задания (T)
  • Со временем с опытом (E)

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

Давайте обсудим их более подробно

Задача (Т)

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

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

Опыт (E)

Как следует из названия, это знания, полученные из точек данных, предоставленных алгоритму или модели. После предоставления набора данных модель будет работать итеративно и изучать некоторые присущие ей шаблоны. Полученное таким образом обучение называется опытом (E). Проводя аналогию с обучением человека, мы можем представить себе ситуацию, в которой человек учится или приобретает некоторый опыт из различных атрибутов, таких как ситуация, отношения и т. Д. Обучение под наблюдением, без присмотра и подкрепление — это некоторые способы обучения или приобретения опыта. Опыт, полученный нашей моделью или алгоритмом ML, будет использован для решения задачи T.

Производительность (P)

Алгоритм ML должен выполнять задачу и получать опыт с течением времени. Мера, которая показывает, выполняет ли алгоритм ML согласно ожиданиям или нет, это его производительность (P). P — это в основном количественная метрика, которая показывает, как модель выполняет задачу, T, используя свой опыт, E. Есть много метрик, которые помогают понять производительность ML, таких как оценка точности, оценка F1, матрица путаницы, точность, отзыв чувствительность и т. д.

Проблемы в машинном обучении

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

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

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

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

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

Проблема переоснащения и недостаточного оснащения — если модель переоснащена или недостаточно оснащена, она не может быть хорошо представлена ​​для данной проблемы.

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

Сложность в развертывании — Сложность модели ML делает его довольно сложным для развертывания в реальной жизни.

Применение машин обучения

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

  • Эмоциональный анализ
  • Анализ настроений
  • Обнаружение и предотвращение ошибок
  • Прогнозирование погоды и прогнозирование
  • Анализ и прогнозирование фондового рынка
  • Синтез речи
  • Распознавание речи
  • Сегментация клиентов
  • Распознавание объектов
  • Обнаружение мошенничества
  • Предотвращение мошенничества
  • Рекомендация товара покупателю в интернет-магазине

Машинное обучение с Python — Экосистема

Введение в Python

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

Python был разработан Гвидо ван Россумом в Stichting Mathematisch Centrum в Нидерландах.

Он был написан как преемник языка программирования под названием «ABC».

Его первая версия была выпущена в 1991 году.

Название Python было выбрано Гвидо ван Россумом из телешоу «Летающий цирк Монти Пайтона».

Это язык программирования с открытым исходным кодом, что означает, что мы можем свободно скачать его и использовать для разработки программ. Его можно скачать с www.python.org. ,

Язык программирования Python обладает функциями как Java, так и Си. Он имеет элегантный код C, а с другой стороны, имеет классы и объекты, такие как Java, для объектно-ориентированного программирования.

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

Сильные и слабые стороны Python

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

Сильные стороны

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

Легко учиться и понимать — синтаксис Python проще; следовательно, даже для начинающих относительно легко выучить и понять язык.


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

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

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

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

Слабое место

Хотя Python является популярным и мощным языком программирования, у него есть слабое место — низкая скорость выполнения.

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

Установка Python

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

  • Установка Python индивидуально
  • Использование готового дистрибутива Python: Anaconda

Давайте обсудим это каждый в деталях.

Установка Python индивидуально

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

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

На платформе Unix и Linux

С помощью следующих шагов мы можем установить Python на платформу Unix и Linux —

Затем нажмите на ссылку, чтобы скачать сжатый исходный код, доступный для Unix / Linux.

Теперь загрузите и распакуйте файлы.

Затем мы можем отредактировать файл Modules / Setup, если мы хотим настроить некоторые параметры.

  • Далее напишите команду run ./configure script
  • сделать
  • сделать установку

На платформе Windows

С помощью следующих шагов мы можем установить Python на платформу Windows —

Далее нажмите на ссылку для установщика Windows, файл python-XYZ.msi. Здесь XYZ — версия, которую мы хотим установить.

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

На платформе Macintosh

Для Mac OS X, Homebrew, отличный и простой в использовании установщик пакетов рекомендуется установить Python 3. Если у вас нет Homebrew, вы можете установить его с помощью следующей команды —

Его можно обновить с помощью команды ниже —

Теперь, чтобы установить Python3 в вашей системе, нам нужно выполнить следующую команду —

Использование предварительно упакованного дистрибутива Python: Anaconda

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

Шаг 1 — Во-первых, нам нужно скачать необходимый установочный пакет из дистрибутива Anaconda. Ссылка для того же — www.anaconda.com/distribution/. Вы можете выбрать ОС Windows, Mac и Linux в соответствии с вашими требованиями.

Шаг 2 — Затем выберите версию Python, которую вы хотите установить на свой компьютер. Последняя версия Python — 3.7. Там вы получите опции для 64-битного и 32-битного графического инсталлятора.

Шаг 3 — После выбора версии ОС и Python он загрузит установщик Anaconda на ваш компьютер. Теперь дважды щелкните файл, и установщик установит пакет Anaconda.

Шаг 4 — Чтобы проверить, установлен он или нет, откройте командную строку и введите Python следующим образом

Почему Python для Data Science?

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

Обширный набор пакетов

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

Простое прототипирование

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

Функция совместной работы

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

Один язык для многих доменов

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

Компоненты экосистемы Python ML

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

Блокнот Jupyter — Блокноты Jupyter в основном предоставляют интерактивную вычислительную среду для разработки приложений Data Science на основе Python.

Машинное обучение с Python — Методы

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

Различные типы методов

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

На основании человеческого контроля

Обучение без учителя

Обучение под наблюдением

Задачи, подходящие для машинного обучения

Следующая диаграмма показывает, какой тип задачи подходит для различных задач ML

На основании способности к обучению

В процессе обучения ниже приведены некоторые методы, основанные на способности к обучению.

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

Шаг 1 — Во-первых, нам нужно собрать все данные обучения для начала обучения модели.

Шаг 2 — Теперь начните обучение модели, предоставляя все данные тренировки за один раз.

Шаг 3 — Затем прекратите процесс обучения / тренировки, как только вы получите удовлетворительные результаты / результаты.

Шаг 4 — Наконец, разверните эту обученную модель в производство. Здесь он будет предсказывать вывод для новой выборки данных.

Онлайн обучение

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

Шаг 1 — Во-первых, нам нужно собрать все данные обучения для начала обучения модели.

Шаг 2 — Теперь начните обучение модели, предоставив алгоритму мини-пакет обучающих данных.

Шаг 3 — Далее нам нужно предоставить мини-пакеты обучающих данных с несколькими приращениями к алгоритму.

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

Шаг 5 — Наконец, он продолжит обучение в течение определенного периода времени на основе новых образцов данных.

Основан на обобщающем подходе

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

Обучение на основе экземпляров

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

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

Модель на основе обучения

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

Загрузка данных для проектов ML

Предположим, что если вы хотите начать проект ML, то, что вам понадобится в первую очередь? Это данные, которые нам нужно загрузить для запуска любого проекта ML. Что касается данных, наиболее распространенным форматом данных для проектов ОД является CSV (значения, разделенные запятыми).


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

Рассмотрение при загрузке данных CSV

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

Заголовок файла

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

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

Случай I: Когда файл данных имеет заголовок файла — он автоматически присваивает имена каждому столбцу данных, если файл данных имеет заголовок файла.

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

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

Комментарии

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

Разделитель

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

Котировки

В файлах данных CSV знак двойной кавычки («») является символом кавычки по умолчанию. Важно учитывать роль кавычек при загрузке файла CSV в проекты ML, потому что мы также можем использовать другой символ кавычки, кроме двойной кавычки. Но в случае использования символа кавычки, отличного от стандартного, мы должны указать его явно.

Методы для загрузки файла данных CSV

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

Загрузите CSV со стандартной библиотекой Python

Первый и наиболее используемый подход для загрузки файла данных CSV — это использование стандартной библиотеки Python, которая предоставляет нам множество встроенных модулей, а именно модуль csv и функцию reader () . Ниже приведен пример загрузки файла данных CSV с его помощью —

пример

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

массив и использовать его для проектов ML. Ниже приведен скрипт Python для загрузки файла данных CSV —

Во-первых, нам нужно импортировать модуль csv, предоставляемый стандартной библиотекой Python, следующим образом:

Далее нам нужно импортировать модуль Numpy для преобразования загруженных данных в массив NumPy.

Теперь укажите полный путь к файлу, хранящемуся в нашем локальном каталоге, с файлом данных CSV —

Затем используйте функцию csv.reader () для чтения данных из файла CSV —

Мы можем напечатать имена заголовков с помощью следующей строки скрипта —

Следующая строка скрипта напечатает форму данных, т.е. количество строк и столбцов в файле —

Следующая строка скрипта даст первые три строки файла данных —

Выход

Загрузите CSV с NumPy

Другой подход к загрузке файла данных CSV — это функции NumPy и numpy.loadtxt () . Ниже приведен пример загрузки файла данных CSV с его помощью —

пример

В этом примере мы используем набор данных индейцев Pima, содержащий данные пациентов с диабетом. Этот набор данных является числовым набором данных без заголовка. Его также можно загрузить в наш локальный каталог. После загрузки файла данных мы можем преобразовать его в массив NumPy и использовать его для проектов ML. Ниже приведен скрипт Python для загрузки файла данных CSV —

Выход

Загрузите CSV с пандами

Другой подход к загрузке файла данных CSV — использование функций Pandas и pandas.read_csv () . Это очень гибкая функция, которая возвращает pandas.DataFrame, которую можно сразу использовать для построения графиков. Ниже приведен пример загрузки файла данных CSV с его помощью —

пример

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

Ниже приведен скрипт Python для загрузки файла данных CSV с использованием набора данных Pandas на Iris —

Выход

Ниже приведен скрипт Python для загрузки файла данных CSV, а также указание имен заголовков с использованием Pandas в наборе данных диабета индейцев Pima.

Выход

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

ML — Понимание данных со статистикой

Введение

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

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

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

Глядя на необработанные данные

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

Ниже приведен сценарий Python, реализованный с использованием функции head () Pandas DataFrame в наборе данных диабета индейцев Пима для просмотра первых 50 строк, чтобы лучше понять его.

пример

Выход

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

Проверка размеров данных

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

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

Мастер Йода рекомендует:  Использование фонового изображения для замены текста

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

Ниже приведен скрипт Python, реализованный путем печати свойства shape в Pandas Data Frame. Мы собираемся реализовать его на наборе данных радужной оболочки для получения общего количества строк и столбцов в нем.

пример

Выход

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

Получение типа данных каждого атрибута

Еще одна полезная практика — знать тип данных каждого атрибута. Причина в том, что согласно требованию иногда нам может потребоваться преобразовать один тип данных в другой. Например, нам может потребоваться преобразовать строку в число с плавающей запятой или int для представления категориальных или порядковых значений. Мы можем получить представление о типе данных атрибута, посмотрев на необработанные данные, но другой способ — использовать свойство dtypes в Pandas DataFrame. С помощью свойства dtypes мы можем классифицировать каждый тип данных атрибутов. Это можно понять с помощью следующего скрипта Python —

пример

Выход

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

Статистическая сводка данных

Мы обсудили рецепт Python, чтобы получить форму, то есть количество строк и столбцов данных, но много раз нам нужно было просматривать сводки по этой форме данных. Это можно сделать с помощью функции description () Pandas DataFrame, которая дополнительно предоставляет следующие 8 статистических свойств каждого атрибута данных —

  • подсчитывать
  • Значит
  • Среднеквадратичное отклонение
  • Минимальное значение
  • Максимальное значение
  • 25%
  • Медиана то есть 50%
  • 75%

пример

Выход

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

Просмотр распределения классов

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

пример

Выход

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

Проверка корреляции между атрибутами

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

Значение коэффициента = 1 — представляет полную положительную корреляцию между переменными.


Значение коэффициента = -1 — представляет полную отрицательную корреляцию между переменными.

Значение коэффициента = 0не представляет никакой корреляции между переменными.

Для нас всегда полезно проанализировать попарные корреляции атрибутов в нашем наборе данных, прежде чем использовать его в проекте ML, потому что некоторые алгоритмы машинного обучения, такие как линейная регрессия и логистическая регрессия, будут работать плохо, если у нас будут сильно коррелированные атрибуты. В Python мы можем легко рассчитать корреляционную матрицу атрибутов набора данных с помощью функции corr () в Pandas DataFrame.

пример

Матрица в вышеприведенном выводе дает корреляцию между всеми парами атрибута в наборе данных.

Обзор перекоса распределения атрибутов

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

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

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

В Python мы можем легко рассчитать перекос каждого атрибута с помощью функции skew () в DataFrame Pandas.

пример

Выход

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

ML — понимание данных с помощью визуализации

Введение

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

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

Одномерные графики: независимое понимание атрибутов

Самый простой тип визуализации — визуализация с одной переменной или «одномерная». С помощью одномерной визуализации мы можем понять каждый атрибут нашего набора данных независимо. Ниже приведены некоторые приемы в Python для реализации одномерной визуализации:

Sr.No Одномерные графики и описание
1 Гистограммы

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

Еще одним быстрым и простым способом получения распределения каждого атрибута является график плотности.

Графики Бокса и Вискера, которые также называются боксплотами, являются еще одним полезным методом для анализа распределения распределения каждого атрибута.

Многомерные графики: взаимодействие между несколькими переменными

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

Sr.No Многовариантные участки и описание
1 Матрица корреляции

Корреляция является показателем изменений между двумя переменными.

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

Машинное обучение — подготовка данных

Введение

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

Это делает подготовку данных наиболее важным шагом в процессе ОД. Подготовка данных может быть определена как процедура, которая делает наш набор данных более подходящим для процесса ML.

Почему предварительная обработка данных?

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

Методы предварительной обработки данных

У нас есть следующие методы предварительной обработки данных, которые можно применять к набору данных для получения данных для алгоритмов ML —

пересчет

Скорее всего, наш набор данных состоит из атрибутов с различным масштабом, но мы не можем предоставить такие данные алгоритму ML, поэтому он требует масштабирования. Масштабирование данных гарантирует, что атрибуты имеют одинаковый масштаб. Обычно атрибуты масштабируются в диапазоне от 0 до 1. Алгоритмы ML, такие как градиентный спуск и k-ближайших соседей, требуют масштабированных данных. Мы можем масштабировать данные с помощью MinMaxScaler класса scikit учиться библиотеки Python.

В этом примере мы будем масштабировать данные набора данных диабета индейцев Пима, которые мы использовали ранее. Сначала будут загружены данные CSV (как это делалось в предыдущих главах), а затем с помощью класса MinMaxScaler они будут масштабироваться в диапазоне от 0 до 1.

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

Теперь мы можем использовать класс MinMaxScaler для изменения масштаба данных в диапазоне от 0 до 1.

Мы также можем суммировать данные для вывода по нашему выбору. Здесь мы устанавливаем точность в 1 и показываем первые 10 строк в выводе.

Из вышеприведенного вывода все данные были перераспределены в диапазоне от 0 до 1.

нормализация

Еще один полезный метод предварительной обработки данных — нормализация. Это используется для изменения масштаба каждой строки данных, чтобы иметь длину 1. Это в основном полезно в наборе разреженных данных, где у нас много нулей. Мы можем изменить масштаб данных с помощью класса Normalizer библиотеки Python scikit-learn .

Типы нормализации

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

бинаризации

Как следует из названия, это метод, с помощью которого мы можем сделать наши данные двоичными. Мы можем использовать двоичный порог для того, чтобы сделать наши данные двоичными. Значения выше этого порогового значения будут преобразованы в 1, а ниже этого порогового значения будут преобразованы в 0.

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

Мы можем бинаризацию данных с помощью Binarizer класса scikit учиться библиотеки Python

В этом примере мы будем масштабировать данные набора данных диабета индейцев Пима, которые мы использовали ранее. Сначала будут загружены данные CSV, а затем с помощью класса Binarizer они будут преобразованы в двоичные значения, то есть 0 и 1, в зависимости от порогового значения. Мы берем 0,5 в качестве порогового значения.

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

Теперь мы можем использовать класс Binarize для преобразования данных в двоичные значения.

Здесь мы показываем первые 5 строк в выводе.

Стандартизация

Еще один полезный метод предварительной обработки данных, который в основном используется для преобразования атрибутов данных с гауссовым распределением. Он отличается от среднего значения и стандартного отклонения (SD) до стандартного гауссовского распределения со средним значением 0 и стандартным отклонением 1. Этот метод полезен в алгоритмах ML, таких как линейная регрессия, логистическая регрессия, которая предполагает гауссовское распределение во входном наборе данных и производит лучше. результаты с измененными данными. Мы можем стандартизировать данные (среднее = 0 и SD = 1) с помощью StandardScaler класса библиотеки Python scikit-learn .

В этом примере мы будем масштабировать данные набора данных диабета индейцев Пима, которые мы использовали ранее. Сначала будут загружены данные CSV, а затем с помощью класса StandardScaler они будут преобразованы в гауссово распределение со средним значением = 0 и SD = 1.

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

Теперь мы можем использовать класс StandardScaler для изменения масштаба данных.

Мы также можем суммировать данные для вывода по нашему выбору. Здесь мы устанавливаем точность до 2 и показываем первые 5 строк в выводе.

Маркировка данных

Мы обсудили важность хороших данных для алгоритмов ML, а также некоторые методы предварительной обработки данных перед их отправкой в ​​алгоритмы ML. Еще один аспект в этом отношении — маркировка данных. Также очень важно отправлять данные в алгоритмы ML с надлежащей маркировкой. Например, в случае проблем с классификацией в данных имеется множество меток в виде слов, цифр и т. Д.

Что такое кодирование меток?

Большинство функций sklearn ожидают, что данные с числовыми метками, а не надписями слов. Следовательно, нам необходимо преобразовать такие метки в числовые метки. Этот процесс называется кодированием меток. Мы можем выполнять кодирование метки данных с помощью LabelEncoder () функций scikit учиться библиотеки Python.

В следующем примере скрипт Python выполнит кодирование метки.

Сначала импортируйте необходимые библиотеки Python следующим образом:

Теперь нам нужно указать следующие метки ввода:

Следующая строка кода создаст кодировщик меток и обучит его.

Следующие строки скрипта будут проверять производительность путем кодирования случайного упорядоченного списка —

Мы можем получить список закодированных значений с помощью следующего скрипта Python —

Машинное обучение — выбор характеристик данных

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

Важность выбора функции данных

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

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

Ниже приведены некоторые преимущества автоматического выбора функций перед моделированием данных.

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

Выбор функции перед моделированием данных повысит точность модели ML.

Выбор функций перед моделированием данных сократит время обучения

Методы выбора функций

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

Одномерный выбор


Этот метод выбора функций очень полезен при выборе этих функций с помощью статистического тестирования, которые наиболее тесно связаны с переменными прогнозирования. Мы можем реализовать метод выбора одномерного объекта с помощью SelectKBest0class библиотеки Python scikit-learn.

В этом примере мы будем использовать набор данных Pima Indians Diabetes, чтобы выбрать 4 из атрибутов, имеющих лучшие характеристики, с помощью статистического критерия хи-квадрат.

Далее мы разделим массив на компоненты ввода и вывода —

Следующие строки кода выберут лучшие функции из набора данных —

Мы также можем суммировать данные для вывода по нашему выбору. Здесь мы устанавливаем точность до 2 и показываем 4 атрибута данных с лучшими характеристиками вместе с лучшим показателем каждого атрибута —

Удаление рекурсивных функций

Как следует из названия, метод выбора функций RFE (рекурсивное исключение объектов) рекурсивно удаляет атрибуты и строит модель с оставшимися атрибутами. Мы можем реализовать метод выбора функций RFE с помощью класса RFE библиотеки Python scikit-learn .

пример

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

Далее мы разделим массив на входные и выходные компоненты —

Следующие строки кода выберут лучшие функции из набора данных —

Выход

В приведенном выше выводе видно, что RFE выбирает preg, mass и pedi в качестве первых 3 лучших функций. Они отмечены как 1 на выходе.

Анализ основных компонентов (PCA)

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

пример

В этом примере мы будем использовать PCA, чтобы выбрать 3 лучших компонента из набора данных диабета индейцев Pima.

Далее мы разделим массив на компоненты ввода и вывода —

Следующие строки кода извлекут функции из набора данных —

Выход

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

Важность функции

Как следует из названия, техника важности функций используется для выбора важных функций. Он в основном использует обученный контролируемый классификатор для выбора функций. Мы можем реализовать эту технику выбора функций с помощью класса ExtraTreeClassifier библиотеки Python scikit-learn.

пример

В этом примере мы будем использовать ExtraTreeClassifier для выбора функций из набора данных диабета индейцев Pima.

Далее мы разделим массив на компоненты ввода и вывода —

Следующие строки кода извлекут функции из набора данных —

Выход

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

Алгоритмы классификации — Введение

Введение в классификацию

Классификация может быть определена как процесс прогнозирования класса или категории по наблюдаемым значениям или заданным точкам данных. Категоризованный вывод может иметь форму, такую ​​как «Черный» или «Белый» или «Спам» или «Нет спама».

Математически классификация — это задача приближения функции отображения (f) от входных переменных (X) к выходным переменным (Y). Это в основном относится к контролируемому машинному обучению, в котором цели также предоставляются вместе с набором входных данных.

Примером проблемы классификации может быть обнаружение спама в электронных письмах. Может быть только две категории вывода: «спам» и «нет спама»; следовательно, это двоичная классификация типов.

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

Типы учащихся в классификации

У нас есть два типа учащихся в соответствии с проблемами классификации —

Ленивые ученики

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

Нетерпеливые ученики

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

Создание классификатора в Python

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

Шаг 1: Импорт необходимого пакета Python

Для построения классификатора с помощью scikit-learn нам нужно его импортировать. Мы можем импортировать его, используя следующий скрипт —

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

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

Следующий скрипт загрузит набор данных;

Нам также необходимо организовать данные, и это можно сделать с помощью следующих сценариев:

Следующая команда напечатает названия меток, «злокачественные» и «доброкачественные» в случае нашей базы данных.

Результатом вышеприведенной команды являются имена меток —

Эти метки отображаются в двоичные значения 0 и 1. Злокачественный рак представлен 0, а доброкачественный рак представлен 1.

Имена и значения функций этих меток можно увидеть с помощью следующих команд:

Результатом вышеприведенной команды являются имена признаков для метки 0, т.е. злокачественный рак —

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

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

Мы можем распечатать функции для этих этикеток с помощью следующей команды —

Это даст следующий вывод —

Мы можем распечатать функции для этих этикеток с помощью следующей команды —

Это даст следующий вывод —

Шаг 3: Организация данных в наборы для обучения и тестирования

Поскольку нам нужно протестировать нашу модель на невидимых данных, мы разделим наш набор данных на две части: обучающий набор и тестовый набор. Мы можем использовать train_test_split () функцию sklearn пакета питона , чтобы разделить данные в наборы. Следующая команда импортирует функцию —

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

Шаг 4: Оценка модели

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

Теперь, инициализируйте модель следующим образом —

Далее с помощью следующей команды мы можем обучить модель —

Теперь для целей оценки нам нужно сделать прогнозы. Это можно сделать с помощью функции предиката () следующим образом:

Это даст следующий вывод —

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

Шаг 5: Нахождение точности

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

Приведенные выше результаты показывают, что классификатор NaïveBayes имеет точность 95,17%.

Метрики оценки классификации

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

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

Матрица путаницы

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

Различные алгоритмы классификации ML

Ниже приведены некоторые важные алгоритмы классификации ML —

  • Логистическая регрессия
  • Машина опорных векторов (SVM)
  • Древо решений
  • Наивный Байес
  • Случайный Лес

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


Приложения

Некоторые из наиболее важных приложений алгоритмов классификации следующие:

  • Распознавание речи
  • Распознавание почерка
  • Биометрическая идентификация
  • Классификация документов

A Feature Selection Tool for Machine Learning in Python

Using the FeatureSelector for efficient machine learning workflows

Feature selection, the process of finding and selecting the most useful features in a dataset, is a crucial step of the machine learning pipeline. Unnecessary features decrease training speed, decrease model interpretability, and, most importantly, decrease generalization performance on the test set.

Frustrated by the ad-hoc feature selection methods I found myself applying over and over again for machine learning problems, I built a >FeatureSelector includes some of the most common feature selection methods:

  1. Features with a high percentage of missing values
  2. Collinear (highly correlated) features
  3. Features with zero importance in a tree-based model
  4. Features with low importance
  5. Features with a single unique value

In this article we will walk through using the FeatureSelector on an example machine learning dataset. We’ll see how it allows us to rapidly implement these methods, allowing for a more efficient workflow.

The complete code is available on GitHub and I encourage any contributions. The Feature Selector is a work in progress and will continue to improve based on the community needs!

Example Dataset

For this example, we will use a sample of data from the Home Credit Default Risk machine learning competition on Kaggle. (To get started with the competition, see this article). The entire dataset is available for download and here we will use a sample for illustration purposes.

The competition is a supervised classification problem and this is a good dataset to use because it has many missing values, numerous highly correlated (collinear) features, and a number of irrelevant features that do not help a machine learning model.

Creating an Instance

To create an instance of the FeatureSelector class, we need to pass in a structured dataset with observations in the rows and features in the columns. We can use some of the methods with only features, but the importance-based methods also require training labels. Since we have a supervised classification task, we will use a set of features and a set of labels.

(Make sure to run this in the same directory as feature_selector.py )

Methods

The feature selector has five methods for finding features to remove. We can access any of the >remove function in the Feature Selector.

Here we will go through each of the >FeatureSelector additionally has several plotting capabilities because visually inspecting data is a crucial component of machine learning.

Missing Values

The first method for finding features to remove is straightforward: find features with a fraction of missing values above a specified threshold. The call below >bold is output).

We can see the fraction of missing values in every column in a dataframe:

To see the features >ops attribute of the FeatureSelector , a Python dict with features as lists in the values.

Finally, we have a plot of the distribution of missing values in all feature:

Collinear Features

Collinear features are features that are highly correlated with one another. In machine learning, these lead to decreased generalization performance on the test set due to high variance and less model interpretability.

The identify_collinear method finds collinear features based on a specified correlation coefficient value. For each pair of correlated features, it identifies one of the features for removal (since we only need to remove one):

A neat visualization we can make with correlations is a heatmap. This shows all the features that have at least one correlation above the threshold:

As before, we can access the entire list of correlated features that will be removed, or see the highly correlated pairs of features in a dataframe.

If we want to investigate our dataset, we can also make a plot of all the correlations in the data by passing in plot_all = True to the call:

Zero Importance Features

The previous two methods can be applied to any structured dataset and are deterministic — the results will be the same every time for a given threshold. The next method is designed only for supervised machine learning problems where we have labels for training a model and is non-deterministic. The identify_zero_importance function finds features that have zero importance according to a gradient boosting machine (GBM) learning model.

With tree-based machine learning models, such as a boosting ensemble, we can find feature importances. The absolute value of the importance is not as important as the relative values, which we can use to determine the most relevant features for a task. We can also use feature importances for feature selection by removing zero importance features. In a tree-based model, the features with zero importance are not used to split any nodes, and so we can remove them without affecting model performance.

The FeatureSelector finds feature importances using the gradient boosting machine from the LightGBM library. The feature importances are averaged over 10 training runs of the GBM in order to reduce variance. Also, the model is trained using early stopping with a validation set (there is an option to turn this off) to prevent overfitting to the training data.

The code below calls the method and extracts the zero importance features:

The parameters we pass in are as follows:

  • task : either “ >eval_metric : metric to use for early stopping (not necessary if early stopping is disabled)
  • n_iterations : number of training runs to average the feature importances over
  • early_stopping : whether or not use early stopping for training the model

This time we get two plots with plot_feature_importances :

On the left we have the plot_n most important features (plotted in terms of normalized importance where the total sums to 1). On the right we have the cumulative importance versus the number of features. The vertical line is drawn at threshold of the cumulative importance, in this case 99%.

Two notes are good to remember for the importance-based methods:

  • Training the gradient boosting machine is stochastic meaning the feature importances will change every time the model is run

This should not have a major impact (the most important features will not suddenly become the least) but it will change the ordering of some of the features. It also can affect the number of zero importance features identified. Don’t be surprised if the feature importances change every time!

    To train the machine learning model, the features are first one-hot encoded. This means some of the features >When we get to the feature removal stage, there is an option to remove any added one-hot encoded features. However, if we are doing machine learning after feature selection, we will have to one-hot encode the features anyway!

Low Importance Features

The next method builds on zero importance function, using the feature importances from the model for further selection. The function identify_low_importance finds the lowest importance features that do not contribute to a specified total importance.

For example, the call below finds the least important features that are not required for achieving 99% of the total importance:

Based on the plot of cumulative importance and this information, the gradient boosting machine considers many of the features to be irrelevant for learning. Again, the results of this method will change on each training run.

To view all the feature importances in a dataframe:

The low_importance method borrows from one of the methods of using Principal Components Analysis (PCA) where it is common to keep only the PC needed to retain a certain percentage of the variance (such as 95%). The percentage of total importance accounted for is based on the same idea.

The feature importance based methods are really only applicable if we are going to use a tree-based model for making predictions. Besides being stochastic, the importance-based methods are a black-box approach in that we don’t really know why the model considers the features to be irrelevant. If using these methods, run them several times to see how the results change, and perhaps create multiple datasets with different parameters to test!

Single Unique Value Features

The final method is fairly basic: find any columns that have a single unique value. A feature with only one unique value cannot be useful for machine learning because this feature has zero variance. For example, a tree-based model can never make a split on a feature with only one value (since there are no groups to divide the observations into).

There are no parameters here to select, unlike the other methods:

We can plot a histogram of the number of unique values in each category:

One point to remember is NaNs are dropped before calculating unique values in Pandas by default.

Removing Features

Once we’ve >ops dict of the FeatureSelector and we can use the lists to remove features manually. Another option is to use the remove built-in function.

For this method, we pass in the methods to use to remove features. If we want to use all the methods implemented, we just pass in methods = ‘all’ .

This method returns a dataframe with the features removed. To also remove the one-hot encoded features that are created during machine learning:

It might be a good >data attribute of the FeatureSelector as a back-up!

Running all Methods at Once

Rather than using the methods indiv >identify_all . This takes a dictionary of the parameters for each method:

Notice that the number of total features will change because we re-ran the model. The remove function can then be called to discard these features.

Conclusions

The Feature Selector class implements several common operations for removing features before training a machine learning model. It offers functions for identifying features for removal as well as visualizations. Methods can be run individually or all at once for efficient workflows.

The missing , collinear , and single_unique methods are deterministic while the feature importance-based methods will change with each run. Feature selection, much like the field of machine learning, is largely empirical and requires testing multiple combinations to find the optimal answer. It’s best practice to try several configurations in a pipeline, and the Feature Selector offers a way to rapidly evaluate parameters for feature selection.

As always, I welcome feedback and constructive criticism. I want to emphasis that I’m looking for help on the FeatureSelector . Anyone can contribute on GitHub and I appreciate advice from those who just uses the tool! I can also be reached on Twitter @koehrsen_will.

FeatureSelector: отбор признаков для машинного обучения на Python

Поиск и отбор признаков в исходных данных является важнейшим этапом обучения. Рассмотрим 5 методов выборки и один удобный инструмент.

FeatureSelector: отбор признаков для машинного обучения на Python

Поиск и отбор признаков в исходных данных является важнейшим этапом обучения. Рассмотрим 5 методов выборки и один удобный инструмент.

Комментарии

О проекте

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

python — Машинное обучение. Отбор признаков при построении модели

Построил 2 модели кредитного скоринга (задача бинарной классификации) на XGBoost и RandomForest. Накидал из БД различных фичей, около 60, загрузил. Построил график значимости признаков.

1) Стоит ли усекать количество фичей, если по графику видно, что значимости они не несут, если да, то по какой линии? (график прикреплен снизу)

2) Стоит ли оставлять бинарные фичи, в которых соотношение категорий например 90 на 10% и они не входят, скажем, в первую 10ку самых значимых признаков?

3) Каким образом может повлиять на модель и конкретно на эффективность модели бустинга и случайного леса, если оставить все эти «маловлиятельные» признаки?


Или же нужно ориентироваться чисто на какие-либо метрики вроде auc-roc, gini, accuracy? Грубо говоря — убралдобавил, посмотрел на значение метрики увеличиласьнет и опять заного..

Функция отрисовки графика:

    19 2
  • 19 янв 2020 2020-01-19 18:21:38
  • Ste_kd

2 ответа

Не знаю, насколько еще актуален вопрос, но вот одно из возможных решений задачи выбора признаков именно для задач кредитного скоринга. http://ai-news.ru/2020/12/open_source_instrument_na_python_dlya_vybora_priznakov_nejroseti.html

  • 13 янв 2020 2020-01-13 10:32:07
  • passant

Общий ответ на ваш вопрос — все зависит от поставленных целей и стоимости ошибки. Если вы видите, что добавдение-удаление определенного признака на тестовой выборке не приводит к значимому для вас изменению точности прогноза — данные убираем, если приводят- оставляют. Даже если вы будете основываться на формальных метриках, в каждой из них есть порог, который вы сами вольны задать и по которому потом будете принимать решение. Я не знаю, насколько значимо, например, для вашего банка уменьшение ложнонегативных прогнозов на 0.0001%. Может это всего несколько тысяч рублей, что для вашего банка ничто. А вот такое же изменение в медицине — это жизнь конкретных людей. А в психологии — вообще точность порядка 10% считается отличной. Так что как ни крути, но окончательное решение — всегда за вами и оно вне области формального анализа.

Обзор библиотек для машинного обучения на Python

Содержание

Scikit-learn [ править ]

Описание [ править ]

Scikit-learn [1] — библиотека машинного обучения на языке программирования Python с открытым исходным кодом. Содержит реализации практически всех возможных преобразований, и нередко ее одной хватает для полной реализации модели. В данной библиотеки реализованы методы разбиения датасета на тестовый и обучающий, вычисление основных метрик над наборами данных, проведение Кросс-валидация [на 28.01.19 не создан] . В библиотеке также есть основные алгоритмы машинного обучения: линейной регрессии [на 28.01.19 не создан] и её модификаций Лассо, гребневой регрессии, опорных векторов [на 28.01.19 не создан] , решающих деревьев и лесов и др. Есть и реализации основных методов кластеризации. Кроме того, библиотека содержит постоянно используемые исследователями методы работы с признаками: например, понижение размерности методом главных компонент [на 28.01.19 не создан] . Частью пакета является библиотека imblearn [2] , позволяющая работать с разбалансированными выборками и генерировать новые значения.

Примеры кода [ править ]

Линейная регрессия [ править ]

Разбиение датасета на тренировочный и тестовый:

Построение и обучение модели:

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

Логистическая регрессия [ править ]

Вывод первых трех тренировочных данных для визуализации:

Разбиение датасета на тренировочный и тестовый:

Построение и обучение модели:

Перцептрон [ править ]

Разбиение датасета на тренировочный и тестовый:

Построение и обучение модели:

Метрический классификатор и метод ближайших соседей [ править ]

Дерево решений и случайный лес [ править ]

Обработка естественного языка [ править ]

Вывод первых трех строк первого тренивочного файла и его класса:

Построение и обучение двух моделей. Первая на основе Байесовской классификации [на 28.01.19 не создан] , а вторая использует метод опорных векторов:

Кросс-валилация и подбор параметров [ править ]

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

Метод опорных векторов (SVM) [ править ]

Разбиение датасета на тестовый и тренировочный:

Построение и обучение модели:

EM-алгоритм [ править ]

Уменьшение размерности [ править ]

Tensorflow [ править ]

Описание [ править ]

Tensorflow [3] — библиотека, разработанная корпорацией Google для работы с тензорами, используется для построения нейронных сетей. Поддержка вычислений на видеокартах имеет поддержку языка программирования C++. На основе данной библиотеки строятся более высокоуровневые библиотеки для работы с нейронными сетями на уровне целых слоев. Так, некоторое время назад популярная библиотека Keras стала использовать Tensorflow как основной бэкенд для вычислений вместо аналогичной библиотеки Theano. Для работы на видеокартах NVIDIA используется библиотека cuDNN. Если вы работаете с картинками (со сверточными нейросетями), скорее всего, придется использовать данную библиотеку.

Примеры кода [ править ]

Сверточная нейронная сеть [ править ]

Реализация сверточной нейронной сети для классификации цифр из датасета MNIST:

Keras [ править ]

Описание [ править ]

Keras [4] — библиотека для построения нейронных сетей, поддерживающая основные виды слоев и структурные элементы. Поддерживает как рекуррентные, так и сверточные нейросети, имеет в своем составе реализацию известных архитектур нейросетей (например, VGG16). Некоторое время назад слои из данной библиотеки стали доступны внутри библиотеки Tensorflow. Существуют готовые функции для работы с изображениями и текстом. Интегрирована в Apache Spark с помощью дистрибутива dist-keras. Данная библиотека позволяет на более высоком уровне работать с нейронными сетями. В качестве библиотеки для бэкенда может использоваться как Tensorflow, так и Theano.

Примеры кода [ править ]

Сверточная нейронная сеть [ править ]

Реализация сверточной нейронной сети для классификации текста:

Igor Subbotin

Data Science, High Scalability and Software Engineering

Thursday, January 22, 2015

Введение в scikit-learn

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

Как появилась библиотека scikit-learn?

David Cournapeau изначально разработал библиотеку scikit-learn в рамках проекта Google Summer of Code в 2007 году. Позднее Matthieu Brucher присоединился к проекту и использовал scikit-learn в своей дипломной работе. В 2010 году INRIA подключилась к работе над библиотекой и первая версия (v0.1 beta) была выпущена в конце января 2010.

На текущий момент в проекте задействовано более 30 активных участников и имеется финансовая поддержка от INRIA, Google, Tinyclues и Python Software Foundation.

Что такое scikit-learn?

Библиотека scikit-learn предоставляет реализацию целого ряда алгоритмов для обучения с учителем (Supervised Learning) и обучения без учителя (Unsupervised Learning) через интерфейс для языка программирования Python. Данная библиотека распространяется под лицензией «Simplified BSD License» и имеет дистрибутивы для множества различных версий Linux, поощрая тем самым академическое и коммерческое использование scikit-learn.

Scikit-learn построена поверх SciPy (Scientific Python), который должен быть установлен перед использованием scikit-learn. Данный стек включает в себя:

  • NumPy: расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами
  • SciPy: открытая библиотека высококачественных научных инструментов для языка программирования Python
  • Matplotlib: библиотека на языке программирования Python для визуализации данных двумерной (2D) графикой (3D графика также поддерживается)
  • IPython: интерактивная оболочка для языка программирования Python, которая предоставляет расширенную интроспекцию, дополнительный командный синтаксис, подсветку кода и автоматическое дополнение
  • Sympy: библиотека для символьных вычислений
  • Pandas: различные структуры данных и анализ

Дополнения и модули SciPy условно именуются SciKits. Именно поэтому модуль, предоставляющий алгоритмы обучения, называется scikit-learn.

Одна из основных концепций библиотеки scikit-learn — библиотека с уровнем надежности и поддержки, который необходим для продакшн-систем, а это значит, что большое внимание уделяется вопросам удобства использования, качества кода, документации и оптимизации скорости работы библиотеки.

Несмотря на то что весь интерфейс библиотеки представлен на Python, но использование библиотек, написанных на C во внутренней реализации некоторых частей scikit-learn, позволяет значительно повысить скорость работы, например, использование NumPy для работы с массивами и для операций с матрицами, использование LAPACK и LibSVM и аккуратное использование Cython.

Возможности scikit-learn

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

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

  • Кластеризация (Clustering): для группировки неразмеченных данных, например, метод k-средних (k-means)
  • Перекрестная проверка (Cross Validation): для оценки эффективности работы модели на независимых данных
  • Наборы данных (Datasets): для тестовых наборов данных и для генерации наборов данных с определенными свойствами для исследования поведенческих свойств модели
  • Сокращение размерности (Dimensionality Reduction): для уменьшения количества атрибутов для визуализации и отбора признаков (Feature Selection), например, метод главных компонент (Principal Component Analysis)
  • Алгоритмические композиции (Ensemble Methods): для комбинирования предсказаний нескольких моделей
  • Извлечение признаков (Feature Extraction): определение атрибутов в изображениях и текстовых данных
  • Отбор признаков (Feature Selection): для выявления значимых атрибутов на основе которых будет построена модель
  • Оптимизация параметров алгоритма (Parameter Tuning): для получения максимально эффективной отдачи от модели
  • Множественное обучение (Manifold Learning): для нелинейного сокращения размерности данных
  • Алгоритмы обучения с учителем (Supervised Models): огромный набор методов не ограничивается обобщенными линейными моделями (Generalized Linear Models), дискриминантным анализом (Discriminate Analysis), наивным байесовским классификатором (Naive Bayes), нейронными сетями (Neural Networks), методом опорных векторов (Support Vector Machines) и деревьями принятия решений (Decision Trees).

Пример: Деревья регрессии и классификации

Следующий небольшой пример показывает, как легко пользоваться библиотекой scikit-learn.

В данном примере мы используем достаточно популярный алгоритм на основе деревьев принятия решений под названием Classification and Regression Tress (CART) и применяем его к набору данных Iris. Данный набор данных используется для различных примеров и поставляется вместе с библиотекой. Классификатор проходит процесс настройки и выполняется процесс предсказания. Все это происходит на тренировочном наборе данных. И в самом конце мы выводим на экран оценку качества работы нашей модели и матрицу неточностей (Confusion Matrix).

Кто использует scikit-learn

Страница отзывов scikit-learn содержит отзывы Inria, Mendeley, wise.io, Evernote, Telecom ParisTech и AWeber в качестве пользователей библиотеки. И, в общем-то, если посмотреть на этот список компаний, которые рассказали об использовании scikit-learn, то вполне можно предположить, что количество компаний, которые используют scikit-learn в своей работе, вероятнее всего, еще больше.

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

Дополнительные ресурсы

Хорошей отправной точкой для продолжения своего знакомства с scikit-learn будет домашняя страница библиотеки, которая содержит документацию и ссылки на дополнительные ресурсы. При желании можно получить доступ к коду в репозитарии на github, а также доступ к релизам на странице Sourceforge.

Документация

Хорошим стартом использования scikit-learn на практике будет страница Quick Start Tutorial и просмотр примеров кода по интересующим вас алгоритмам обучения в руководстве пользователя. Ну и конечно же API Reference будет отличным подспорьем при выполнении практических задач.

Публикации

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

Книги

Хорошей книгой по данной тематике будет “Building Machine Learning Systems with Python”, она написана хорошим языком и содержит интересные примеры.

Мастер Йода рекомендует:  Как использовать декораторы с фабричными функциями в JavaScript
Добавить комментарий