Быстрый способ загрузки тренировочных данных для машинного обучения
Причина моего провала очевидна: я мало тренировался. И кроме того, я мало тренировался. И еще — я мало тренировался. Это если так, вкратце (Харуки Мураками). Во многих библиотеках машинного обучения есть встроенные способы загрузки наборов данных. В силу того, что scikit-learn является де-факто стандартом для разработки моделей, она обладает богатым инструментарием для этого. Он компактно сконцентрирован в модуле sklearn.datasets и для его первичного обзора проще всего воспользоваться функцией dir:
import sklearn.datasets [it for it in dir(sklearn.datasets) if '__' not in it]
Так, популярна группа функций, начинающихся с load:
[it for it in dir(sklearn.datasets) if 'load' in it]
Функция позволяет получать результат в виде словаря или кортежа (параметр return_X_y) данных в форме датафреймов или numpy массивов (as_frame). Например, способ ниже демонстрирует, как выгрузить и признаки, и цель вместе в pandas датафрейм:
from sklearn.datasets import load_breast_cancer import numpy as np df = load_breast_cancer(as_frame=True)['frame'] df.head()
Аналогичную группу образуют функции, начинающиеся с fetch:
[it for it in dir(sklearn.datasets) if 'fetch' in it]
Результат извлекается аналогичными аргументами. Например, ниже демонстрируется выгрузка в один pandas датафрейм возвращенных в виде кортежа матрицы признаков и цели:
from sklearn.datasets import fetch_california_housing df, y = fetch_california_housing(return_X_y=True, as_frame=True) df['MedHouseVal'] = y df.head()
Более мощный функционал предусмотрен в функции fetch_openml. Она загружает датасеты из открытого хранилища openml. Достаточно задать ей имя набора, который можно посмотреть на сайте в разделе datasets:
from sklearn.datasets import fetch_openml df = fetch_openml('ozone-level-8hr', as_frame=True)['frame'] df.head()
Со слова make начинаются методы создания собственных синтетических наборов:
[it for it in dir(sklearn.datasets) if 'make' in it]
Кому интересно за деталями обращайтесь к более ранним статьям о том, как создавать наборы с make_classification для классификации и с make_blobs для кластеризации.