На этом шаге мы рассмотрим загрузку и трактовку данных.
Данные, которые мы будем использовать для этого примера, - это набор данных Iris, классический набор данных в машинном обучении и статистике. Он уже включен в модуль datasets библиотеки scikit-learn. Мы можем загрузить его, вызвав функцию load_iris:
[In 1]: from sklearn.datasets import load_iris iris_dataset = load_iris()
Объект iris, возвращаемый load_iris, является объектом Bunch, который очень похож на словарь. Он содержит ключи и значения:
[In 3]: print("Ключи iris_dataset: \n{}".format(iris_dataset.keys())) Ключи iris_dataset: dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
Значение ключа DESCR - это краткое описание набора данных. Здесь мы покажем начало описания (оставшуюся часть описания вы можете посмотреть самостоятельно):
[In 4]: print(iris_dataset['DESCR'][:193] + "\n...") .. _iris_dataset: Iris plants dataset -------------------- **Data Set Characteristics:** :Number of Instances: 150 (50 in each of three classes) :Number of Attributes: 4 numeric, pre ...
Значение ключа target_names - это массив строк, содержащий сорта цветов, которые мы хотим предсказать:
[In 5]: print("Названия ответов: {}".format(iris_dataset['target_names'])) Названия ответов: ['setosa' 'versicolor' 'virginica']
Значение feature_names - это список строк с описанием каждого признака:
[In 6]: print("Названия признаков: \n{}".format(iris_dataset['feature_names'])) Названия признаков: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
Сами данные записаны в массивах target и data. data - массив NumPy, который содержит количественные измерения длины чашелистиков, ширины чашелистиков, длины лепестков и ширины лепестков:
[In 7]: print("Тип массива data: {}".format(type(iris_dataset['data']))) Тип массива data: <class 'numpy.ndarray'>
Строки в массиве data соответствуют цветам ириса, а столбцы представляют собой четыре признака, которые были измерены для каждого цветка:
[In 8]: print("Форма массива data: {}".format(iris_dataset['data'].shape)) Форма массива data: (150, 4)
Мы видим, что массив содержит измерения для 150 различных цветов по 4 признакам. Вспомним, что в машинном обучении отдельные элементы называются примерами (samples), а их свойства - характеристиками или признаками (feature). Форма (shape) массива данных определяется количеством примеров, умноженным на количество признаков. Это является общепринятым соглашением в scikit-learn, и ваши данные всегда будут представлены в этой форме. Ниже приведены значения признаков для первых пяти примеров:
[In 11]: print("Пepвые пять строк массива data:\n{}".format(iris_dataset['data'][:5])) Пepвые пять строк массива data: [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] [4.6 3.1 1.5 0.2] [5. 3.6 1.4 0.2]]
Взглянув на эти данные, мы видим, что все пять цветов имеют ширину лепестка 0.2 см и первый цветок имеет самую большую длину чашелистика, 5.1 см.
Массив target содержит сорта уже измеренных цветов, тоже записанные в виде массива NumPy:
[In 12]: print("Тип массива target: {}".format(type(iris_dataset['target']))) Тип массива target: <class 'numpy.ndarray'>
target представляет собой одномерный массив, по одному элементу для каждого цветка:
[In 13]: print("Форма массива target: {}".format(iris_dataset['target'].shape)) Форма массива target: (150,)
Сорта кодируются как целые числа от 0 до 2:
[In 14]: print("Ответы:\n{}".format(iris_dataset['target'])) Ответы: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]
Значения чисел задаются массивом iris['target_names']: 0 - setosa, 1 - versicolor, а 2 - virginica.
На следующем шаге мы рассмотрим метрики эффективности.