Openbravo-rus.ru

Образование по русски
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Машинное обучение с помощью python

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

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

    Переводы , 30 сентября 2017 в 22:18

Машинное обучение на подъеме, этот термин медленно забрался на территорию так называемых модных слов (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% или около этой цифры первоначального набора данных. Не забудьте про видео, ведь оно расскажет намного больше об этом интересном алгоритме.

Читать еще:  It программист обучение

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

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

Реализация

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Понятность

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

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

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

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

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

Гибкость

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Понятность

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

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

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

Читать еще:  Обучение работы в powerpoint

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

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

Гибкость

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

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

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

Заключение

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

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

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

И попробуем загнать в модель машинного обучения окружения точек, точнее, цвета тех точек, которые находятся вокруг данной точки. Напомню, что цвет точки – это числа от 0 до 255, для каждой составляющих RGB (Red, Blue, Green).

Давайте изобразим это графически:

В центре колец из циферок – искомая точка, а точки, ее окружающие, подаются на вход модели машинного обучения. Если размер скользящего окна (вот этого квадратика из циферок) равен 5, то входной элемент состоит из 24 точек (сама эта точке в него не входит). Соответственно, на вход подается 72 числа. На выходе – одно число, это составляющая R, G или B анализируемой точки. Соответственно, нам потребуется три модели, для каждого из цветов RGB, которые мы будет обучать и использовать отдельно.

Для проведения данного эксперимента нам понадобятся следующие знания:

  • Работа с картинками (библиотека PIL): Работа с изображениями
  • Работа с таблицами данных (Pandas): Анализ данных. PANDAS
  • Машинное обучение (об этом будет рассказано в рамках данного урока).

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

Обучающая выборка 984

Ср. ошибка: 0.02032520325203252

Тестовая выборка 993

Ср. ошибка: 17.300100704934543

Как видим, на обучающей выборке модель сработала идеально, среднее отклонение почти нуль. На тестовой есть небольшая ошибка. Значение абсолютное, в данном примере оно равно 17 (у вас может получиться другое число, так как данные рандомые, да и сам алгоритм машинного обучения тоже завязан на рандоме, обычно получается от 15 до 20). Много это или мало? Давайте посмотрим.

Вот у нас цвет с красной составляющей 100, остальные по нулям:

Как видим, разница едва заметна.

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

Для этого воспользуемся следующей программой на Python:

Я настоятельно рекомендую сначала загнать все точки в выборку, и прогнать эту выборку целиком через модели, а потом уже по результатам зажигать точки (как сделано в данном примере). Не предъявлять модели каждую точку по отдельности, это будет работать гораздо медленнее.

Теперь посмотрим на результат:

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

Как это можно использовать? Например, у нас есть испорченная фотография (с точками, царапинами и прочими артефактами). Используя алгоритм машинного обучения, мы можем попробовать исправить ее. Как? Берем похожую картинку. Обучаем на ней модель (таким же образом, как мы делали это сейчас). А потом дефектные пиксели заменим на нормальные. Нормальные пиксели нам подскажет модель. Для поиска дефектных пикселей мы сделаем другую модель.

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

Создание модели обучения в Scikit-learn: библиотека машинного обучения Python

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

Важные особенности scikit-learn:

  • Простые и эффективные инструменты для интеллектуального анализа данных. Он включает в себя различные алгоритмы классификации, регрессии и кластеризации, включая машины опорных векторов, случайные леса, повышение градиента, k-средних и т. Д.
  • Доступно для всех и многоразового использования в различных контекстах.
  • Построен на основе NumPy, SciPy и matplotlib.
  • Открытый исходный код, коммерчески доступный — лицензия BSD.

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

Установка:

  • NumPy
  • SciPy как его зависимости.

Перед установкой scikit-learn убедитесь, что у вас установлены NumPy и SciPy. Если у вас есть работающая установка NumPy и SciPy, самый простой способ установить scikit-learn — это использовать pip:

Давайте начнем с процесса моделирования сейчас.

Шаг 1: Загрузите набор данных

Набор данных — это не что иное, как набор данных. Набор данных обычно состоит из двух основных компонентов:

  • Особенности : (также известные как предикторы, входные данные или атрибуты), они являются просто переменными наших данных. Они могут быть более одного и, следовательно, представлены матрицей объектов («X» — это общее обозначение для представления матрицы объектов). Список всех имен элементов называется именами элементов .
  • Ответ : (также известный как цель, метка или вывод) Это выходная переменная, зависящая от переменных объекта. У нас обычно есть один столбец ответа, и он представлен вектором ответа («y» — это обычное обозначение для представления вектора ответа). Все возможные значения, взятые вектором ответа, называются целевыми именами .
Читать еще:  Редакторское дело обучение

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

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

from sklearn.datasets import load_iris

# сохранить матрицу объектов (X) и вектор ответов (y)

# сохранить имя объекта и цели

# печать функций и целевых имен нашего набора данных

print ( «Feature names:» , feature_names)

print ( «Target names:» , target_names)

print ( «nType of X is:» , type (X))

# печать первых 5 строк ввода

print ( «nFirst 5 rows of X:n» , X[: 5 ])

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

Чтобы установить панд, используйте следующую команду pip:

В пандах важными типами данных являются:

Серия : Серия — это одномерный помеченный массив, способный хранить данные любого типа.

DataFrame : это двумерная помеченная структура данных со столбцами потенциально разных типов. Вы можете думать об этом как о электронной таблице или таблице SQL, или как о множестве объектов Series. Как правило, это наиболее часто используемый объект панд.

Примечание. Файл CSV, использованный в приведенном ниже примере, можно загрузить здесь: weather.csv

import pandas as pd

data = pd.read_csv( ‘weather.csv’ )

# форма набора данных

print ( «Shape:» , data.shape)

print ( «nFeatures:» , data.columns)

# сохранение матрицы признаков (X) и вектора ответа (y)

X = data[data.columns[: — 1 ]]

y = data[data.columns[ — 1 ]]

# печать первых 5 строк матрицы объектов

print ( «nFeature matrix:n» , X.head())

# печать первых 5 значений вектора ответа

print ( «nResponse vector:n» , y.head())

Шаг 2: Разделение набора данных

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

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

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

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

Преимущества поезда / тестового сплита:

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

Рассмотрим пример ниже:

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

from sklearn.datasets import load_iris

# сохранить матрицу объектов (X) и вектор ответов (y)

# разбиение X и Y на обучающие и тестовые наборы

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4 , random_state = 1 )

# печать форм новых X-объектов

# печать форм новых y-объектов

Функция train_test_split принимает несколько аргументов, которые описаны ниже:

  • X, y : это матрица признаков и вектор ответа, которые необходимо разделить.
  • test_size : это отношение тестовых данных к заданным данным. Например, установка test_size = 0,4 для 150 строк X приводит к получению тестовых данных размером 150 x 0,4 = 60 строк.
  • random_state : если вы используете random_state = some_number, то вы можете гарантировать, что ваше разделение будет всегда одинаковым. Это полезно, если вам нужны воспроизводимые результаты, например, при тестировании на согласованность в документации (чтобы все могли видеть одинаковые цифры).

Шаг 3: Обучение модели

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

В приведенном ниже примере используется классификатор KNN (K ближайших соседей) .

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

Теперь рассмотрим пример ниже:

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

from sklearn.datasets import load_iris

# сохранить матрицу объектов (X) и вектор ответов (y)

# разбиение X и Y на обучающие и тестовые наборы

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4 , random_state = 1 )

# тренировка модели на тренировочном наборе

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors = 3 )

# делать прогнозы на тестовом наборе

# сравнение фактических значений ответа (y_test) с предсказанными значениями ответа (y_pred)

from sklearn import metrics

print ( «kNN model accuracy:» , metrics.accuracy_score(y_test, y_pred))

# создание прогноза для данных выборки

sample = [[ 3 , 5 , 4 , 2 ], [ 2 , 3 , 5 , 4 ]]

pred_species = [iris.target_names[p] for p in preds]

print ( «Predictions:» , pred_species)

from sklearn.externals import joblib

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

  • Мы создаем объект классификатора knn, используя:
  • Классификатор обучается с использованием данных X_train. Процесс называется подходящим . Мы передаем матрицу признаков и соответствующий вектор ответа.
  • Теперь нам нужно проверить наш классификатор на данных X_test. Для этого используется метод knn.predict . Возвращает предсказанный вектор ответа, y_pred .
  • Теперь мы заинтересованы в поиске точности нашей модели, сравнивая y_test и y_pred . Это делается с помощью метода метрик модуля precision_score :
  • Рассмотрим случай, когда вы хотите, чтобы ваша модель делала прогноз на основе выборочных данных. Затем образец ввода может быть просто передан так же, как мы передаем любую матрицу объектов.
  • Если вы не заинтересованы в обучении вашего классификатора снова и снова и используете предварительно обученный классификатор, можно сохранить его классификатор с помощью joblib . Все, что вам нужно сделать, это:
  • Если вы хотите загрузить уже сохраненный классификатор, используйте следующий метод:

По мере приближения к концу этой статьи, вот некоторые преимущества использования scikit-learn над некоторыми другими библиотеками машинного обучения (например, библиотеками R):

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

Ссылки:

Эта статья предоставлена Нихилом Кумаром . Если вам нравится GeeksforGeeks и вы хотели бы внести свой вклад, вы также можете написать статью, используя contrib.geeksforgeeks.org, или отправить свою статью на электронный адрес contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Ссылка на основную публикацию
Adblock
detector