Наука о данных

Учебник по машинному обучению с помощью Scikit-learn

Учебник по машинному обучению с помощью Scikit-learn

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

Пакет scikit-learn содержит простые и эффективные инструменты для применения интеллектуального анализа данных и анализа данных в наборах данных, и эти алгоритмы доступны для применения в различных контекстах. Это пакет с открытым исходным кодом, доступный по лицензии BSD, что означает, что мы можем использовать эту библиотеку даже в коммерческих целях. Он построен поверх matplotlib, NumPy и SciPy, поэтому универсален по своей природе. Мы будем использовать Anaconda с записной книжкой Jupyter, чтобы представить примеры в этом уроке.

Что предоставляет scikit-learn?

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

Установите Python scikit-learn

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

python -m virtualenv scikit
источник scikit / bin / активировать

Как только виртуальная среда станет активной, мы можем установить библиотеку pandas в виртуальную среду, чтобы можно было выполнять следующие примеры:

pip install scikit-learn

Или мы можем использовать Conda для установки этого пакета с помощью следующей команды:

conda установить scikit-learn

Мы видим что-то подобное, когда выполняем указанную выше команду:

После завершения установки с Conda мы сможем использовать пакет в наших скриптах Python как:

импортный склеарн

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

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

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

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

из наборов данных импорта sklearn
радужная оболочка = наборы данных.load_iris ()
цифры = наборы данных.load_digits ()
цифры.данные

Запустив приведенный выше фрагмент кода, мы увидим следующий результат:

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

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

Изучение набора данных

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

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

print ('Цель:', цифры.цель)
print ('Ключи:', цифры.ключи ())
print ('Описание:', цифры.ОПИСАНИЕ)

Запустив приведенный выше фрагмент кода, мы увидим следующий результат:

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

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

digits_set = цифры.данные
печать (набор_цифров.форма)

Запустив приведенный выше фрагмент кода, мы увидим следующий результат:

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

импортировать matplotlib.pyplot как plt
# Объединить изображения и целевые метки в виде списка
images_and_labels = список (zip (цифры.изображения, цифры.цель))
для индекса (изображение, метка) в перечислении (images_and_labels [: 8]):
# инициализируем подзаговор 2X4 в i + 1-й позиции
plt.подзаговор (2, 4, индекс + 1)
# Не нужно рисовать оси
plt.ось ('выкл')
# Показывать изображения во всех подзаголовках
plt.imshow (изображение, cmap = plt.см.gray_r, interpolation = 'ближайший')
# Добавить заголовок к каждому подзаголовку
plt.title ('Обучение:' + str (метка))
plt.показывать()

Запустив приведенный выше фрагмент кода, мы увидим следующий результат:

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

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

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

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

  1. Устранение признаков
  2. Извлечение функций

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

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

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

из склеарна.декомпозиция импорта PCA
feature_pca = PCA (n_components = 2)
уменьшенный_data_random = feature_pca.fit_transform (цифры.данные)
model_pca = PCA (n_components = 2)
уменьшенный_data_pca = model_pca.fit_transform (цифры.данные)
уменьшенный_data_pca.форма
печать (уменьшенные_данные_random)
печать (уменьшенные_данные_pca)

Запустив приведенный выше фрагмент кода, мы увидим следующий результат:

[[-1.2594655 21.27488324]
[7.95762224 -20.76873116]
[6.99192123 -9.95598191]

[10.8012644 -6.96019661]
[-4.87210598 12.42397516]
[-0.34441647 6.36562581]]
[[-1.25946526 21.27487934]
[7.95761543 -20.76870705]
[6.99191947 -9.9559785]

[10.80128422 -6.96025542]
[-4.87210144 12.42396098]
[-0.3443928 6.36555416]]

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

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

Применение кластеризации k-средних

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

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

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

из кластера импорта sklearn
k = 3
k_means = кластер.KСредний (k)
# подходят данные
k_means.подходят (цифры.данные)
# результат печати
печать (k_means.ярлыки _ [:: 10])
печать (цифры.цель [:: 10])

Запустив приведенный выше фрагмент кода, мы увидим следующий результат:

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

Заключение

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

Поделитесь своими отзывами об уроке в Twitter с @sbmaggarwal и @LinuxHint.

Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...