Openbravo-rus.ru

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

Машинное обучение 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):

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

Ссылки:

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

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

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

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

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

Реализация

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

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

Читать еще:  Обучение бизнесу в интернете

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предложение от 8host.com

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

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

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

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

Требования

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

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

1: Импорт Scikit-learn

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

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

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

python -c «import sklearn»

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

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

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

pip install scikit-learn[alldeps]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Олег молчанов обучение питон цены

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Библиотеки Python, необходимые для машинного обучения

Перевод статьи Шуби Астаны «Essential libraries for Machine Learning in Python».

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

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

Одно из самых больших преимуществ Python – широкий спектр библиотек.

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

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

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

Scikit-learn для работы с классическими алгоритмами машинного обучения

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

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

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

Tensorflow для глубокого обучения

Если вы занимаетесь машинным обучением, то наверняка испытывали, реализовывали или хотя бы слышали о некоторых формах алгоритма глубокого обучения. Являются ли они необходимыми? Не всегда. Классные ли они, если сделаны правильно? Да!

Касательно Tensorflow любопытно то, что при написании программы на Python можно компилировать и запускать программу как на CPU, так и на GPU. Таким образом для запуска на GPU вам не приходится писать на C++ или на уровне CUDA.

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

Theano – также для глубокого обучения

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

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

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

Pandas для извлечения и подготовки данных

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

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

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

Matplotlib для визуализации данных

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

Как же извлекать пользу из всех имеющихся у вас данных? Как вдохновлять бизнес-аналитиков и рассказывать им истории, полные «озарений»?

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

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

Эта библиотека поддерживает GUI-бэкенд во всех операционных системах, а также может экспортировать графики в распространенных форматах (PDF, SVG, JPG, PNG, BMP, GIF).

Seaborn – еще одна библиотека для визуализации данных

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

Заключение

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

Если считаете, что в этом списке должны быть и другие библиотеки – поделитесь в комментариях!

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