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

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

Для начала вам необходимо импортировать модуль наборов данных из scikit-learn следующим образом:

import sklearn.datasets

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

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

  1. Встроенные наборы данных
  2. Получение внешних наборов данных
  3. Создание новых случайных наборов данных
  4. и другие :)

Начнем со встроенных наборов данных.

1. Встроенные наборы данных

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

Загрузить встроенный набор данных из модуля наборов данных довольно просто. Нам просто нужно импортировать функцию из модуля наборов данных, которая загружает нужные нам данные. Например, мы можем загрузить набор данных о ценах на жилье в Бостоне, вызвав функцию load_boston () следующим образом:

from sklearn.datasets import load_boston
boston_dataset = load_boston()

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

boston_dataset.keys()
dict_keys(['data', 'target', 'feature_names', 'DESCR','filename'])

Этот словарь содержит ключ под названием DESCR, который дает описание набора данных, а также некоторую другую полезную информацию в виде значений параметров contain feature_names и target_names. ключи:

print(boston_dataset['DESCR'][20:255] + "\n...")
Boston house prices dataset
---------------------------

**Data Set Characteristics:**  

    :Number of Instances: 506 

    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.
...

Значение ключа target_names - это массив строк, содержащий цены на дома, которые мы хотим спрогнозировать.

Значение feature_names - это список строк, дающий описание каждой функции:

boston_dataset['feature_names']
array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE',    'DIS',
'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')

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

2. Получение внешних наборов данных

Есть много полезных наборов данных, которые общедоступны в Интернете, и большинство из них обслуживаются и размещаются людьми или учреждениями, не имеющими отношения к scikit-learn. Scikit-learn предоставляет универсальные методы для загрузки этих наборов данных из Интернета. В качестве примера мы покажем вам, как загрузить набор данных «Лица с метками среди диких людей (LFW)». Его размер составляет более 200 МБ, и при выполнении проектов компьютерного зрения этот набор данных может использоваться для задач обнаружения или распознавания лиц. Мы можем загрузить набор данных следующим образом:

from sklearn.datasets import fetch_lfw_people
lfw_people = fetch_lfw_people(min_faces_per_person=70,resize=0.4)

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

for name in lfw_people.target_names:
    print(name)
Ariel Sharon
Colin Powell
Donald Rumsfeld
George W Bush
Gerhard Schroeder
Hugo Chavez
Tony Blair

Мы также можем взглянуть на изображения, используя метод imshow () в matplotlib следующим образом:

plt.imshow(lfw_people.images[1],cmap='gray')

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

3. Создание случайных наборов данных

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

Ниже мы импортируем метод make_classification () из модуля наборов данных. Этот метод сгенерирует нам случайные точки данных с учетом некоторых параметров. Мы можем играть с параметрами, как захотим. Среди доступных параметров - количество образцов, функции, классы и т. Д.

from sklearn.datasets import make_classification
plt.subplot(121)
plt.title("Two features, two classes")
X, Y = make_classification(n_features=2, n_redundant=0,
n_informative=2, n_clusters_per_class=2)
plt.scatter(X[:, 0], X[:, 1], c=Y,edgecolor='k')
plt.subplot(122)
plt.title("Two features, three classes")
X, Y = make_classification(n_features=2, n_redundant=0,
n_informative=2, n_clusters_per_class=1,n_classes=3)
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolor='k')

4. Другие наборы данных

Есть несколько других типов наборов данных, которые доступны через модуль наборов данных. Например, доступны некоторые изображения jpeg, добавленные в репозиторий авторами scikit-learn. Эти изображения могут быть полезны на практике при тестировании некоторых алгоритмов при прототипировании или экспериментировании. Чтобы загрузить эти изображения, мы можем использовать функцию load_sample_images () следующим образом:

from sklearn.datasets import load_sample_image
plt.imshow(load_sample_image('flower.jpg'))
plt.show()

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

from sklearn.datasets import fetch_openml
minist = fetch_openml(name='minist_784', version=4)

В-третьих, существуют наборы данных в формате svmlight / libsvm, который особенно удобен для разреженных наборов данных. Если у нас есть эти наборы данных, уже загруженные на наши локальные машины, мы можем загрузить их в наш код следующим образом:

from sklearn.datasets import load_svmlight_file
X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt")

Заключение

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

LinkedIn: https://www.linkedin.com/company/bootrain

Twitter: https://twitter.com/BootrainSchool

Веб: www.bootrain.com