Введение в Scikit-Learn в Python
Python и 1000 программ
В этом учебнике вы узнаете, что такое Scikit-Learn, как он используется и какова его базовая терминология. Хотя Scikit-learn является лишь одной из нескольких библиотек машинного обучения, доступных в Python, она является одной из самых известных. Библиотека предоставляет множество эффективных версий разнообразного количества алгоритмов машинного обучения. Его доступные методы и обширная онлайн-документация делают его отличным инструментом как для начинающих, так и для новичков.
Знание библиотеки Scikit-Learn,
Развитие глубокого понимания элементов API библиотек
Проработанные в этой статье примеры машинного обучения с использованием одного из включенных наборов данных
Что такое Scikit-Learn в Python?
Scikit-Learn - это бесплатная библиотека машинного обучения для Python. Он поддерживает как контролируемое, так и неконтролируемое машинное обучение, предоставляя разнообразные алгоритмы для классификации, регрессии, кластеризации и уменьшения размерности. Библиотека построена с использованием многих библиотек, с которыми вы, возможно, уже знакомы, таких как NumPy и SciPy. Он также хорошо играет с другими библиотеками, такими как Pandas и Seaborn.
Как установить Scikit-Learn в Python?
Установка Scikit-Learn может быть выполнена с помощью менеджера пакетов или менеджера пакетов. Просто напишите приведенный ниже код в редакторе командной строки или терминале и позвольте менеджеру пакетов обработать установку за вас: pip conda

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

Как загружать данные в Scikit-Learn
Как данные представлены в Scikit-Learn?
Чтобы понять, как данные представлены в Scikit-Learn, давайте загрузим набор данных. Библиотека предоставляет доступ ко многим различным наборам данных, один из которых является наиболее популярным. Набор данных настолько известен, что его часто называют «привет-миром» машинного обучения!
Давайте посмотрим, как вы можете загрузить этот набор данных:

В приведенном выше фрагменте кода вы загрузили функцию из модуля sklearn. Затем был напечатан тип этого объекта. Этот объект на самом деле очень похож на словарь, что означает, что он содержит ключи и значения. Давайте посмотрим на ключи, доступные в этом объекте:load_iris() datasets Bunch

Давайте посмотрим, что показывает этот (описание) набора данных, распечатав его содержимое: DESCR

Полное описание усечено, так как оно продолжается немного дольше. Я рекомендую вам распечатать его самостоятельно и просмотреть его, так как он дает вам полезный обзор данных в наборе данных.
Описание набора данных легко доступно для вас в sklearn
Данные имеют много уникальных атрибутов, которые описаны в описании.
Один из других ключей в объекте набора данных является ключом. Этот ключ фактически содержит данные. Давайте посмотрим на тип этого набора данных:Bunch data

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

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

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

Идея этого набора данных заключается в том, чтобы использовать данные для прогнозирования вида цветка на основе этих атрибутов. Прежде чем мы углубимся в использование данных, давайте продолжим изучение того, что доступно в файле данных. Давайте исследуем и ключи:Bunch target target_names

При этом мы видим, что позиция индекса ключа относится к значениям от 0 до 2. target_names
Ваш первый проект машинного обучения: классификация данных
Теперь, когда у вас есть четкое представление о наборе данных и о том, как можно получить доступ к данным, давайте посмотрим на использование данных для вашего самого первого проекта машинного обучения! Результирующие этикетки, которые вы будете стремиться создать, являются дискретными. Они представляют собой единый вид цветка. Поскольку они дискретны, это означает, что вы работаете над проектом классификации. Поскольку в наборе данных уже есть метки, это также будет примером контролируемого обучения sklearn
Загрузка и представление данных с помощью Scikit-Learn в Python
Давайте начнем снова с изучения данных. Вы уже научились получать доступ к данным. Давайте немного изучим данные. Поскольку набор данных является таким часто используемым набором данных, он фактически встроен в библиотеку Seaborn. Будет немного проще исследовать с помощью этой библиотеки, поэтому давайте загрузим ее туда.

Создадим Seaborn , который строит попарные отношения в наборе данных. Метод берет Pandas DataFrame и строит его. Аналогично, он позволяет использовать параметр для окрашивания данных другим столбцом. Давайте посмотрим, как это выглядит: pairplot() hue=

При этом возвращается следующее изображение:

Поскольку наш набор данных имеет четыре функции, есть четыре строки и столбца. Цвета основаны на целевой переменной (результирующей метке). Мы можем видеть, как для многих парных комбинаций приводят к визуально различимым кластерам! Это отличная новость.
Почему это отличная новость? Поскольку между группами существуют явные различия, наша модель машинного обучения должна быть в состоянии легко определить различия между группами.
Создание первой модели с помощью Scikit-Learn в Python
Теперь, когда у вас есть хорошее представление о форме и распределении ваших данных, давайте посмотрим, как работает построение модели в Scikit-Learn! Хотя эти шаги иногда можно разбить на несколько шагов, ниже вы найдете четыре основных шага для построения модели:
Определите модель: выберите тип модели, которую вы будете использовать, например регрессию или классификатор. В этом случае вы будете создавать классификатор, так как ваши результирующие метки будут дискретными.
Подгонка данных: это включает в себя захват шаблонов данных. Хотя за кулисами есть много технических и математических сложностей, Scikit-learn справляется с большинством из них за вас.
Прогнозирование данных: используйте модель, созданную выше, для прогнозирования данных тестирования.
Оцените свою модель: поскольку у вас есть тестовый набор данных с его истинными метками, вы можете рассчитать метрики, указывающие, насколько точна ваша модель.
Начнем с шага No1: определим нашу модель. Поскольку этот учебник предназначен для вводного взгляда на Scikit-Learn, давайте построим модель, которая может быть очень легко и визуально понята. Мы будем использовать классификатор дерева решений для моделирования нашего алгоритма.
Разделение данных на обучающие и тестовые данные с помощью Scikit-Learn в Python
Нашим первым шагом будет разделение наших данных на обучающие и тестовые наборы данных. Это соглашение о загрузке функций и целевых объектов в отдельные переменные и соответственно. Помните, что эти значения хранятся в ключах и ключах объекта. Затем мы можем использовать эту функцию для разделения наших данных на данные обучения и тестирования.X y .data .target Bunch train_test_split()
Может показаться, что вы импортируете много разных частей. И, действительно, так и есть. Это может показаться странным и пугающим, но это то, с чем вы будете все больше и больше знакомиться по пути машинного обучения! Каждый из этих различных импортов будет объяснен на протяжении всего учебника.

Набор данных был загружен в caleld объекта iris iris
Вы создали два фрейма DataFrame и , содержащие функции и метки. Обратите внимание, что является заглавной буквой и не является. Хотя в этом нет необходимости, это условность.X y X y
Затем вы создали четыре дополнительные переменные, используя функцию из модуля. Эти DataFrames являются вашими обучающими и тестовыми наборами данных. Вы определили размер теста равным 30% и стратифицировали данные с помощью целевых показателей. Это позволяет воспроизвести этот анализ. train_test_split model_selection random_state=100
Эти четыре результирующих объекта на самом деле являются Pandas DataFrames. Это означает, что вы действительно можете исследовать их, как и любой другой DataFrame. Давайте посмотрим на их размеры:

Результирующие кадры DataFrames разбиваются на 70% и 30% блоков прежних DataFrames. Компоненты DataFrames по-прежнему имеют четыре столбца, в то время как целевые DataFrames имеют только один.
Создание классификатора дерева решений с помощью Scikit-Learn в Python
Теперь, когда ваши данные загружены, вы можете начать строить свою модель!

В приведенном выше коде вы создали объект. До сих пор вы только передавали инструкции, сообщая Scikit-Learn, что дерево должно иметь глубину только 3 и 100, чтобы воспроизвести ваши результаты. Вы создали оболочку модели, но еще не смоделировали данные. model DecisionTreeClassifier random_state
Объект имеет метод, который позволяет передать две обучающие переменные. Этот метод позволяет модели использовать эти данные для разработки дерева решений. На этом этапе Scikit-Learn строит вашу модель! DecisionTreeClassifier .fit()

Визуализация модели с помощью Scikit-Learn в Python
Хотя на первый взгляд, ничего не происходит, когда вы запускаете этот код, за кулисами на самом деле происходит многое! Scikit-learn строит дерево решений для вас! Мы действительно можем увидеть это дерево, импортировав модуль из модуля. Давайте посмотрим на решения, которые дерево будет использовать:plot_tree tree

При этом возвращается следующее изображение:

Разберем, что мы сделали в коде функции:plot_tree()
Первым параметром должна быть ваша модель, которую в данном случае вы вызвали model
Представляет столбцы в обучающем наборе данных. Их можно найти с помощью ключа объекта. feature_names feature_names iris
Представляет собой фактические метки набора данных, которыми в данном случае являются виды цветов. class_names
filled=True просто инструктирует Scikit-Learn раскрасить наш участок дерева решений
Теперь давайте посмотрим на само изображение. Каждое поле представляет точку принятия решения (если только это не последнее поле, и в этом случае оно представляет собой само решение). Если значения в поле совпадают с нашей точкой данных, то стрелка перемещается влево. Если решение не соответствует критериям, оно смещается вправо.
В приведенном выше случае учитывается только ширина и длина лепестка. Это связано с тем, что глубина нашего дерева является ограничивающим фактором, который мы устанавливаем. Проверить это можно с помощью атрибута модели. Давайте посмотрим, как это выглядит: feature_importances_

Это разбивает, из 100%, насколько важна каждая функция для модели. Поскольку и ширина, и длина чашелистика имеют значение 0%, они вообще не учитываются. Это подтверждает то, что мы видели в визуальном виде дерева.
Оценка вашей первой модели с помощью Scikit-Learn в Python
Теперь пришло время посмотреть, насколько хорошо наша модель на самом деле работает! Для этого сначала необходимо проинструктировать модель прогнозировать данные. Для этого вы можете использовать метод на вашем домене . Метод ожидает возможности тестового набора данных. .predict() model

В приведенном выше коде вы загрузили новую переменную . Он был создан с помощью метода с использованием тестовых данных из набора данных объектов. На самом деле это просто возвращает массив NumPy прогнозируемых значений! prediction .predict()
Поскольку у вас также есть массив истинных значений для меток, вы можете легко проверить, насколько точна ваша модель! Это можно сделать с помощью функции модуля, как показано ниже: accuracy_score() metrics

Функция ожидает два основных параметра: представляет истинные метки данных и ожидает прогнозы модели.accuracy_score() y_true y_pred
Из приведенного выше кода видно, что точность модели составляет 95,6%! Это означает, что модель должна быть в состоянии предсказать вид цветка в 95,6% случаев, учитывая эти значения.
Заключение и резюме
В этом учебнике вы изучили основы библиотеки Scikit-Learn на Python. Вы узнали, что такое библиотека и как ее можно использовать. В разделе ниже приведен обзор того, что вы узнали в этом учебнике:
Scikit-Learn — это библиотека машинного обучения, доступная на Языке Python
Библиотека может быть установлена с помощью менеджеров пакетов или пакетов pip conda
Данные поставляются в комплекте с несколькими наборами данных, такими как набор данных iris
Вы узнали, как построить модель, подогнать модель и оценить модель с помощью Scikit-Learn
Вы построили модель классификатора дерева принятия решений для прогнозирования вида цветка с учетом измерений чашелистика и лепестка.