алгоритмы машинного обучения python
Знакомство с машинным обучением в Python
В данном уроке мы поговорим как о самом машинном обучении, так и о некоторых основополагающих понятиях, без которых невозможно начинать с ним знакомство. Кроме того, мы напишем на языке Python несколько примеров алгоритмов вероятностной идентификации элементов или событий.
Знакомство с машинным обучением
Давайте представим, что нам необходимо написать программу, которая сможет определить, является ли тот или иной фрукт апельсином или лимоном. Может показаться, что написать подобный алгоритм достаточно просто, и он будет выдавать требуемый результат, но стоит заметить, что эффективность подобной программы снижается при работе с большим объемом данных. Вот в таких ситуациях и требуется машинное обучение.
Существуют различные этапы в машинном обучении:
В машинном обучении для поиска закономерностей используются различные алгоритмы, которые подразделяются на две группы:
Управляемое обучение
Методика управляемого обучения предполагает вырабатывание компьютером способности распознавать элементы на основе предоставленной подборки образцов. Компьютер изучает образцы и вырабатывает способность распознавать новые данные на основе изученной информации.
Например, можно обучить компьютер отфильтровывать сообщения спама на основе ранее полученной информации.
Управляемое обучение включает только два этапа:
Некоторые алгоритмы управляемого обучения включают:
Пример
Кроме того Sklearn хорошо взаимодействует с библиотеками NumPy и SciPy.
Установка Sklearn
Инструкция по установке Sklearn предлагает очень простой способ установки для различных платформ. Для работы библиотеки требуется несколько зависимостей:
Если эти зависимости уже установлены, то можно установить Sklearn, просто выполнив команду:
Более простым способом является установка Anaconda. Данный пакет сам установит все зависимости, так что вам не придется устанавливать их по одной.
Чтобы проверить, что Sklearn работает корректно, просто импортируйте эту библиотеку в интерпретаторе языка Python:
Если это не вызвало ошибок, значит все готово к работе.
После того, как мы разобрались с установкой, давайте вернемся к нашей задаче. Допустим, мы хотим научиться различать животных. Для этого мы создадим алгоритм, который сможет определить, является ли то или иное животное лошадью или курицей.
Сперва нам необходимо собрать исходные данные для каждого вида животного. Некоторые исходные данные представлены в таблице ниже.
Рост(см) | Вес (кг) | Температура (гр. Цельсия) | Название |
---|---|---|---|
18 | 0.6 | 40 | Курица (0) |
18 | 0.6 | 41 | Курица (0) |
94 | 600 | 37 | Лошадь (1) |
94 | 600 | 38 | Лошадь (1) |
Полученные нами исходные данные содержат некоторые основные характеристики и их значения для наших двух животных. Чем больше исходных данных, тем более точными и менее предвзятыми будут результаты.
Основываясь на имеющихся данных, мы можем написать алгоритм и обучить его определять животное на основе изученных данных и классифицировать его как лошадь или курицу. Теперь мы напишем алгоритм, который будет выполнять поставленную задачу.
Сначала импортируем модуль tree из Sklearn.
Теперь определим набор характеристик, по которым будем классифицировать животных.
Далее определяем классификатор, который будет основываться на схеме принятия решения.
Передаем наши данные классификатору.
Полный код этого алгоритма представлен ниже.
Теперь мы можем предполагать определенный набор данных. Мы пробуем определить животное ростом 18 сантиметров, весом 0.6 кг и температурой 41 градус следующим образом:
А вот так мы пробуем определить животное ростом 94 см, весом 600 кг и температурой 37.5 градусов:
Как видно из примера, вы заставили алгоритм изучить все характеристики и названия двух животных, и знания об этих данных далее используются при идентификации новых животных.
Самостоятельное обучение
При самостоятельном обучении ваша машина получает только набор вводных данных. После чего машина сама будет способна определить взаимосвязи между введенными данными и любыми другими предположительными данными. В отличие от управляемого обучения, при котором машине предоставляются некоторые проверочные данные для обучения, самостоятельное обучение предполагает, что компьютер сам найдет закономерности и взаимосвязи между различными наборами данных.
Самостоятельное обучение может далее подразделяться на:
Кластеризация: Кластеризацией называют органичное группирование данных. Например, можно сгруппировать покупательские предпочтения клиентов и использовать их в рекламе, показывая только те объявления, которые соответствуют их покупкам или предпочтениям.
Некоторые из популярных алгоритмов самостоятельного обучения включают:
Самостоятельное обучение будет очень важной технологией в ближайшем будущем. Это обусловлено тем, что в настоящее время существует много необработанной информации, которая еще не была оцифрована.
Заключение
Я надеюсь, что данный урок помог вам начать свое знакомство с машинным обучением. Это всего лишь введение, ведь эта тема очень обширна, и мы рассмотрели лишь малую часть того, на что способно машинное обучение.
Выбор в пользу алгоритмов управляемого или самостоятельного машинного обучения зависит от различных факторов, таких как структура и объем данных.
Машинное обучение может применяться почти во всех сферах нашей жизни, например: борьба с мошенничеством, персонализированные ленты новостей в социальных сетях, соответствующие предпочтениям пользователей, фильтрация электронной почты и вредоносных программ, прогноз погоды и даже в сфере электронной торговли для прогнозирования покупательских предпочтений клиентов.
ПО для машинного обучения на Python
Сегодня существует большое количество программных инструментов для создания моделей Machine Learning. Первые такие инструменты формировались в среде ученых и статистиков, где популярны языки R и Python, исторически сложились экосистемы для обработки, анализа и визуализации данных именно на этих языках, хотя определенные библиотеки машинного обучения есть и для Java, Lua, С++. При этом интерпретируемые языки программирования существенно медленнее компилируемых, поэтому на интерпретируемом языке описывают подготовку данных и структуру моделей, а основные вычисления проводят на компилируемом языке.
В данном посте мы расскажем преимущественно о библиотеках, имеющих реализацию на Python, поскольку этот язык обладает большим количеством пакетов для интеграции в разного рода сервисы и системы, а также для написания различных информационных систем. Материал содержит общее описание известных библиотек и будет полезен прежде всего тем, кто начинает изучать область ML и хочет примерно понимать, где искать реализации тех или иных методов.
При выборе конкретных пакетов для решения задач в первую очередь стоит определиться, заложен ли в них механизм для решения ваших проблем. Так, например, для анализа изображений, скорее всего, придется иметь дело с нейронными сетями, а для работы с текстом — с рекурентными, при небольшом количестве данных от нейросетей наверняка придется отказаться.
Библиотеки общего назначения на Python
Все описанные в данном разделе пакеты так или иначе используются при решении практически любой задачи по машинному обучению. Часто их достаточно, чтобы построить модель целиком, по крайней мере в первом приближении.
NumPy
Библиотека с открытым исходным кодом для выполнения операций линейной алгебры и численных преобразований. Как правило, такие операции необходимы для преобразования датасетов, которые можно представить в виде матрицы. В библиотеке реализовано большое количество операций для работы с многомерными массивами, преобразования Фурье и генераторы случайных чисел. Форматы хранения numpy де-факто являются стандартом для хранения числовых данных во многих других библиотеках (например, Pandas, Scikit-learn, SciPy).
Pandas
Библиотека для обработки данных. С ее помощью можно загрузить данные практически из любого источника (интеграция с основными форматами хранения данных для машинного обучения), вычислить различные функции и создать новые параметры, построение запросов к данным с помощью агрегативных функций сродни реализованным в SQL. Кроме того, имеются разнообразные функции преобразования матриц, метод скользящего окна и прочие методы для получения информации из данных.
Scikit-learn
Библиотека программного обеспечения с более чем десятилетней историей содержит реализации практически всех возможных преобразований, и нередко ее одной хватает для полной реализации модели. Как правило, при программировании практически любой модели на языке Python какие-то преобразования с использованием данной библиотеки всегда присутствуют.
Scikit-learn содержит методы разбиения датасета на тестовый и обучающий, вычисление основных метрик над наборами данных, проведение кросс-валидации. В библиотеке также есть основные алгоритмы машинного обучения: линейной регрессии (и ее модификаций Лассо, гребневой регрессии), опорных векторов, решающих деревьев и лесов и др. Есть и реализации основных методов кластеризации. Кроме того, библиотека содержит постоянно используемые исследователями методы работы с параметрами (фичами): например, понижение размерности методом главных компонент. Частью пакета является библиотека imblearn, позволяющая работать с разбалансированными выборками и генерировать новые значения.
SciPy
Довольно обширная библиотека, предназначенная для проведения научных исследований. В ее состав входит большой набор функций из математического анализа, в том числе вычисление интегралов, поиск максимума и минимума, функции обработки сигналов и изображений. Во многих отношениях данную библиотеку можно считать аналогом пакета MATLAB для разработчиков на языке Python. C ее помощью можно решать системы уравнений, использовать генетические алгоритмы, выполнять многие задачи по оптимизации.
Специфические библиотеки
В данном разделе рассмотрены библиотеки или со специфической сферой применимости, или популярные у ограниченного числа пользователей.
Tensorflow
Библиотека, разработанная корпорацией Google для работы с тензорами, используется для построения нейросетей. Поддержка вычислений на видеокартах имеет версию для языка C++. На основе данной библиотеки строятся более высокоуровневые библиотеки для работы с нейронными сетями на уровне целых слоев. Так, некоторое время назад популярная библиотека Keras стала использовать Tensorflow как основной бэкенд для вычислений вместо аналогичной библиотеки Theano. Для работы на видеокартах NVIDIA используется библиотека cuDNN. Если вы работаете с картинками (со сверточными нейросетями), скорее всего, придется использовать данную библиотеку.
Keras
Библиотека для построения нейросетей, поддерживающая основные виды слоев и структурные элементы. Поддерживает как рекуррентные, так и сверточные нейросети, имеет в своем составе реализацию известных архитектур нейросетей (например, VGG16). Некоторое время назад слои из данной библиотеки стали доступны внутри библиотеки Tensorflow. Существуют готовые функции для работы с изображениями и текстом (Embedding слов и т.д.). Интегрирована в Apache Spark с помощью дистрибутива dist-keras.
Caffe
Фреймворк для обучения нейросетей от университета Беркли. Как и TensorFlow, использует cuDNN для работы с видеокартами NVIDIA. Содержит в себе реализацию большего количества известных нейросетей, один из первых фреймворков, интегрированных в Apache Spark (CaffeOnSpark).
pyTorch
Позволяет портировать на язык Python библиотеку Torch для языка Lua. Содержит реализации алгоритмов работы с изображениями, статистических операций и инструментов работы с нейронными сетями. Отдельно можно создать набор инструментов для оптимизационных алгоритмов (в частности стохастического градиентного спуска).
Реализации градиентного бустинга над решающими деревьями
Подобные алгоритмы неизменно вызывают повышенный интерес, так как часто они показывают лучший результат, чем нейросети. Особенно это проявляется, если в вашем распоряжении не очень большие наборы данных (очень грубая оценка: тысячи и десятки тысяч, но не десятки миллионов). Среди моделей-победителей на соревновательной платформе kaggle алгоритмы градиентного бустинга над решающими деревьями встречаются довольно часто.
Как правило, реализации таких алгоритмов есть в библиотеках машинного обучения широкого профиля (например, в Scikit-learn). Однако существуют особые реализации данного алгоритма, которые часто можно встретить среди победителей различных конкурсов. Стоит выделить следующие.
Xgboost
Самая распространенная реализация градиентного бустинга. Появившись в 2014 г., уже к 2016-му она завоевала немалую популярность. Для выбора разбиения используют сортировку и модели, основанные на анализе гистограмм.
LightGBM
CatBoost
Разработка компании Яндекс, вышедшая, как и LightGBM, в 2017 г. Реализует особый подход к обработке категориальных признаков (основанный на target encoding, т.е. на подмене категориальных признаков статистиками на основе предсказываемого значения). К тому же алгоритм содержит особый подход к построению дерева, который показал лучшие результаты. Проведенное нами сравнение показало, что данный алгоритм лучше других работает прямо «из коробки», т.е. без настройки каких-либо параметров.
Microsoft Cognitive Toolkit (CNTK)
Другие ресурсы для разработки
По мере популяризации машинного обучения неоднократно появлялись проекты по упрощению разработки и приведению его в графическую форму с доступом через онлайн. В данном поле можно отметить несколько.
Azure ML
Сервис машинного обучения на платформе Microsoft Azure, в котором можно выстраивать обработку данных в виде граф и проводить вычисления на удаленных серверах, с возможностью включения кода на языке Python и на других.
IBM DataScience experience (IBM DSX)
Сервис для работы в среде Jupyter Notebook с возможностью выполнять вычисления в языке Python и на других. Поддерживает интеграцию с известными наборами данных и Spark, проектом IBM Watson.
Пакеты для социальных наук
Среди них можно выделить IBM Statistical Package for the Social Sciences (SPSS) — программный продукт IBM для обработки статистики в социальных науках, поддерживает графический интерфейс задания процесса обработки данных. Некоторое время назад стало можно встраивать алгоритмы машинного обучения в общую структуру выполнения. В целом, ограниченная поддержка алгоритмов машинного обучения становится популярной среди пакетов для статистиков, в которых уже включены статистические функции и методы визуализации (например, Tableau и SAS).
Заключение
Выбор программного пакета, на основе которого будет решаться задача, обычно определяется следующими условиями.
Построить первую модель можно, используя сравнительно небольшое число библиотек, а дальше придется принимать решение, на что тратить время: на проработку параметров (feature engineering) или на подбор оптимальной библиотеки и алгоритма, или же выполнять эти задачи параллельно.
Теперь немного о рекомендациях по выбору. Если вам нужен алгоритм, который лучше всего работает прямо «из коробки», — это Catboost. Если вы предполагаете работать с изображениями, можно использовать Keras и Tensorflow или Caffe. При работе с текстом надо определиться, собираетесь ли вы строить нейросеть и учитывать контекст. Если да, те же пожелания, что и к изображениям, если достаточно «мешка слов» (частотных характеристик встречаемости каждого слова), подойдут алгоритмы градиентного бустинга. При небольших наборах данных можно использовать алгоритмы генерации новых данных из Scikit-learn и линейные методы, реализованные в той же библиотеке.
Как правило, описанных библиотек хватает для решения большинства задач, даже для победы на соревнованиях. Область машинного обучения развивается очень быстро — мы уверены, что новые фреймворки появились уже в момент написания этого поста.
Николай Князев, руководитель группы машинного обучения «Инфосистемы Джет»
Обзор методов классификации в машинном обучении с помощью Scikit-Learn
Авторизуйтесь
Обзор методов классификации в машинном обучении с помощью Scikit-Learn
Для машинного обучения на Python написано очень много библиотек. Сегодня мы рассмотрим одну из самых популярных — Scikit-Learn.
Scikit-Learn упрощает процесс создания классификатора и помогает более чётко выделить концепции машинного обучения, реализуя их с помощью понятной, хорошо документированной и надёжной библиотекой.
Что такое Scikit-Learn?
Scikit-Learn — это Python-библиотека, впервые разработанная David Cournapeau в 2007 году. В этой библиотеке находится большое количество алгоритмов для задач, связанных с классификацией и машинным обучением в целом.
Scikit-Learn базируется на библиотеке SciPy, которую нужно установить перед началом работы.
Основные термины
В системах машинного обучения или же системах нейросетей существуют входы и выходы. То, что подаётся на входы, принято называть признаками (англ. features).
Признаки по существу являются тем же, что и переменные в научном эксперименте — они характеризуют какой-либо наблюдаемый феномен и их можно как-то количественно измерить.
Когда признаки подаются на входы системы машинного обучения, эта система пытается найти совпадения, заметить закономерность между признаками. На выходе генерируется результат этой работы.
Этот результат принято называть меткой (англ. label), поскольку у выходов есть некая пометка, выданная им системой, т. е. предположение (прогноз) о том, в какую категорию попадает выход после классификации.
В контексте машинного обучения классификация относится к обучению с учителем. Такой тип обучения подразумевает, что данные, подаваемые на входы системы, уже помечены, а важная часть признаков уже разделена на отдельные категории или классы. Поэтому сеть уже знает, какая часть входов важна, а какую часть можно самостоятельно проверить. Пример классификации — сортировка различных растений на группы, например «папоротники» и «покрытосеменные». Подобная задача может быть выполнена с помощью Дерева Решений — одного из типов классификатора в Scikit-Learn.
При обучении без учителя в систему подаются непомеченные данные, и она должна попытаться сама разделить эти данные на категории. Так как классификация относится к типу обучения с учителем, способ обучения без учителя в этой статье рассматриваться не будет.
Процесс обучения модели — это подача данных для нейросети, которая в результате должна вывести определённые шаблоны для данных. В процессе обучения модели с учителем на вход подаются признаки и метки, а при прогнозировании на вход классификатора подаются только признаки.
Принимаемые сетью данные делятся на две группы: набор данных для обучения и набор для тестирования. Не стоит проверять сеть на том же наборе данных, на которых она обучалась, т. к. модель уже будет «заточена» под этот набор.
Типы классификаторов
Scikit-Learn даёт доступ ко множеству различных алгоритмов классификации. Вот основные из них:
На сайте Scikit-Learn есть много литературы на тему этих алгоритмов с кратким пояснением работы каждого из них.
Метод k-ближайших соседей (K-Nearest Neighbors)
Этот метод работает с помощью поиска кратчайшей дистанции между тестируемым объектом и ближайшими к нему классифицированным объектами из обучающего набора. Классифицируемый объект будет относится к тому классу, к которому принадлежит ближайший объект набора.
Классификатор дерева решений (Decision Tree Classifier)
Этот классификатор разбивает данные на всё меньшие и меньшие подмножества на основе разных критериев, т. е. у каждого подмножества своя сортирующая категория. С каждым разделением количество объектов определённого критерия уменьшается.
Классификация подойдёт к концу, когда сеть дойдёт до подмножества только с одним объектом. Если объединить несколько подобных деревьев решений, то получится так называемый Случайный Лес (англ. Random Forest).
Наивный байесовский классификатор (Naive Bayes)
Такой классификатор вычисляет вероятность принадлежности объекта к какому-то классу. Эта вероятность вычисляется из шанса, что какое-то событие произойдёт, с опорой на уже на произошедшие события.
Каждый параметр классифицируемого объекта считается независимым от других параметров.
Линейный дискриминантный анализ (Linear Discriminant Analysis)
Этот метод работает путём уменьшения размерности набора данных, проецируя все точки данных на линию. Потом он комбинирует эти точки в классы, базируясь на их расстоянии от центральной точки.
Этот метод, как можно уже догадаться, относится к линейным алгоритмам классификации, т. е. он хорошо подходит для данных с линейной зависимостью.
Метод опорных векторов (Support Vector Machines)
Работа метода опорных векторов заключается в рисовании линии между разными кластерами точек, которые нужно сгруппировать в классы. С одной стороны линии будут точки, принадлежащие одному классу, с другой стороны — к другому классу.
Классификатор будет пытаться увеличить расстояние между рисуемыми линиями и точками на разных сторонах, чтобы увеличить свою «уверенность» определения класса. Когда все точки построены, сторона, на которую они падают — это класс, которому эти точки принадлежат.
Логистическая регрессия (Logistic Regression)
У каждого признака есть своя метка, равная только 0 или только 1. Логистическая регрессия является линейным классификатором и поэтому используется, когда в данных прослеживается какая-то линейная зависимость.
Примеры задач классификации
Задача классификации — эта любая задача, где нужно определить тип объекта из двух и более существующих классов. Такие задачи могут быть разными: определение, кошка на изображении или собака, или определение качества вина на основе его кислотности и содержания алкоголя.
В зависимости от задачи классификации вы будете использовать разные типы классификаторов. Например, если классификация содержит какую-то бинарную логику, то к ней лучше всего подойдёт логистическая регрессия.
По мере накопления опыта вам будет проще выбирать подходящий тип классификатора. Однако хорошей практикой является реализация нескольких подходящих классификаторов и выбор наиболее оптимального и производительного.
Реализация классификатора
Первый шаг в реализации классификатора — его импорт в Python. Вот как это выглядит для логистической регрессии:
Вот импорты остальных классификаторов, рассмотренных выше:
Однако, это не все классификаторы, которые есть в Scikit-Learn. Про остальные можно прочитать на соответствующей странице в документации.
После этого нужно создать экземпляр классификатора. Сделать это можно создав переменную и вызвав функцию, связанную с классификатором.
Теперь классификатор нужно обучить. Перед этим нужно «подогнать» его под тренировочные данные.
Обучающие признаки и метки помещаются в классификатор через функцию fit :
Эти этапы (создание экземпляра, обучение и классификация) являются основными при работе с классификаторами в Scikit-Learn. Но эта библиотека может управлять не только классификаторами, но и самими данными. Чтобы разобраться в том, как данные и классификатор работают вместе над задачей классификации, нужно разобраться в процессах машинного обучения в целом.
Процесс машинного обучения
Процесс содержит в себе следующие этапы: подготовка данных, создание обучающих наборов, создание классификатора, обучение классификатора, составление прогнозов, оценка производительности классификатора и настройка параметров.
Во-первых, нужно подготовить набор данных для классификатора — преобразовать данные в корректную для классификации форму и обработать любые аномалии в этих данных. Отсутствие значений в данных либо любые другие отклонения — все их нужно обработать, иначе они могут негативно влиять на производительность классификатора. Этот этап называется предварительной обработкой данных (англ. data preprocessing).
Следующим шагом будет разделение данных на обучающие и тестовые наборы. Для этого в Scikit-Learn существует отличная функция traintestsplit.
Как уже было сказано выше, классификатор должен быть создан и обучен на тренировочном наборе данных. После этих шагов модель уже может делать прогнозы. Сравнивая показания классификатора с фактически известными данными, можно делать вывод о точности классификатора.
Вероятнее всего, вам нужно будет «корректировать» параметры классификатора, пока вы не достигните желаемой точности (т. к. маловероятно, что классификатор будет соответствовать всем вашим требованиям с первого же запуска).
Ниже будет представлен пример работы машинного обучения от обработки данных и до оценки.
Реализация образца классификации
Поскольку набор данных iris достаточно распространён, в Scikit-Learn он уже присутствует, достаточно лишь заложить эту команду:
Тем не менее, тут ещё нужно подгрузить CSV-файл, который можно скачать здесь.
Благодаря тому, что данные уже были подготовлены, долгой предварительной обработки они не требуют. Единственное, что может понадобиться — убрать ненужные столбцы (например ID ) таким образом:
Теперь нужно определить признаки и метки. С библиотекой Pandas можно легко «нарезать» таблицу и выбрать определённые строки/столбцы с помощью функции iloc() :
Код выше выбирает каждую строку и столбец, обрезав при этом последний столбец.
Выбрать признаки интересующего вас набора данных можно также передав в скобках заголовки столбцов:
После того, как вы выбрали нужные признаки и метки, их можно разделить на тренировочные и тестовые наборы, используя функцию train_test_split() :
Чтобы убедиться в правильности обработки данных, используйте:
Теперь можно создавать экземпляр классификатора, например метод опорных векторов и метод k-ближайших соседей:
Теперь нужно обучить эти два классификатора:
Эти команды обучили модели и теперь классификаторы могут делать прогнозы и сохранять результат в какую-либо переменную.
Теперь пришло время оценить точности классификатора. Существует несколько способов это сделать.
Нужно передать показания прогноза относительно фактически верных меток, значения которых были сохранены ранее.
Вот, к примеру, результат полученных метрик:
Поначалу кажется, что KNN работает точнее. Вот матрица неточностей для SVC:
Количество правильных прогнозов идёт с верхнего левого угла в нижний правый. Вот для сравнения метрики классификации для KNN:
Оценка классификатора
Когда дело доходит до оценки точности классификатора, есть несколько вариантов.
Точность классификации
Точность классификации измерять проще всего, и поэтому этот параметр чаще всего используется. Значение точности — это число правильных прогнозов, делённое на число всех прогнозов или, проще говоря, отношение правильных прогнозов ко всем.
Хоть этот показатель и может быстро дать вам явное представление о производительности классификатора, его лучше использовать, когда каждый класс имеет хотя бы примерно одинаковое количество примеров. Так как такое будет случаться редко, рекомендуется использовать другие показатели классификации.
Логарифмические потери
Значение Логарифмических Потерь (англ. Logarithmic Loss) — или просто логлосс — показывает, насколько классификатор «уверен» в своём прогнозе. Логлосс возвращает вероятность принадлежности объекта к тому или иному классу, суммируя их, чтобы дать общее представление об «уверенности» классификатора.
Этот показатель лежит в промежутке от 0 до 1 — «совсем не уверен» и «полностью уверен» соответственно. Логлосс сильно падает, когда классификатор сильно «уверен» в неправильном ответе.
Площадь ROC-кривой (AUC)
Такой показатель используется только при бинарной классификации. Площадь под ROC-кривой представляет способность классификатора различать подходящие и не подходящие какому-либо классу объекты.
Значение 1.0 : вся область, попадающая под кривую, представляет собой идеальный классификатор. Следовательно, 0.5 означает, что точность классификатора соответствует случайности. Кривая рассчитывается с учётом точности и специфичности модели. Подробнее о расчётах можно прочитать здесь.
Матрица неточностей
Матрица неточностей (англ. Confusion Matrix) — это таблица или диаграмма, показывающая точность прогнозирования классификатора в отношении двух и более классов. Прогнозы классификатора находятся на оси X, а результат (точность) — на оси Y.
Ячейки таблицы заполняются количеством прогнозов классификатора. Правильные прогнозы идут по диагонали от верхнего левого угла в нижний правый. Про это можно почитать в данной статье.
Отчёт о классификации
В библиотеке Scikit-Learn уже встроена возможность создавать отчёты о производительности классификатора. Эти отчёты дают интуитивно понятное представление о работе модели.
Заключение
Чтобы лучше вникнуть в работу с Scikit-Learn, неплохо было бы узнать больше о работе различных методов классификации. После этого стоит лучше узнать о замере производительности классификаторов. Однако понимание многих нюансов в классификации приходит только со временем.