Делая прогнозы на основе данных, важно оценивать метрики, связанные с прогнозом, как точку, чтобы попытаться исправить как можно больше ошибок. Одной из довольно простых метрик оценки является матрица путаницы sklearn. На приведенной ниже диаграмме показано, как работает бинарная матрица путаницы. В идеале все положительные результаты были бы истинными, и все отрицательные также были бы истинными, без ложных срабатываний и без ложных отрицаний:

Чтобы проиллюстрировать, как использовать sklearn путаницу_матрицу, я написал программу с функцией make_classifier sklearn. Вместо создания бинарного классификатора я решил немного оживить ситуацию, дав метке три класса.

Я написал программу в Google Colab, бесплатном онлайн-блокноте Google Jupyter Notebook. Отличительной особенностью Google Colab является то, что созданные блокноты можно сохранять на диске Google, что также является бесплатным. Также доступен ряд других блокнотов Jupyter, таких как www.jupyter.org, но я никогда не создавал блокноты на этом сайте, поэтому не могу проверить качество этого продукта.

Недостатком Google Colab является тот факт, что он не имеет адекватного средства отмены, поэтому пользователь должен быть осторожным, чтобы не удалить или не перезаписать какой-либо код, потому что в этом случае он будет потерян навсегда.

После того, как я создал блокнот, в котором буду писать программу, я импортировал библиотеки, которые мне понадобятся для выполнения программы. Обычно я импортирую библиотеки только по мере необходимости, но в этом блокноте использовались библиотеки pandas, numpy, sklearn, matplotlib и seaborn. Pandas создает и поддерживает кадры данных, numpy выполняет алгебраические функции, sklearn содержит множество функций, используемых в процессе машинного обучения, а matplotlib и seaborn используются для графического представления точек данных в кадре данных:

После того, как библиотеки были импортированы, я использовал утилиту make_classifier от sklearn для создания мультиклассового классификатора. Затем я использовал matplotlib, чтобы поместить точки данных фрейма данных в графический формат: -

Точки данных в кадре данных можно увидеть на снимке экрана ниже:

Затем я определил переменные X и Y, которые будут содержать данные, на основе которых будет сделан прогноз. Целевая переменная — это метка, которая была удалена из фрейма данных.

Переменные X и y являются независимыми и зависимыми соответственно. Переменная X состоит из кадра данных с отброшенной меткой, а переменная y состоит из цели.

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

Когда данные были предварительно обработаны, я использовал sklearn train_test_split, чтобы разделить набор данных на наборы для обучения и проверки:

Затем я определил модель. В моем предыдущем посте я обсуждал тот факт, что GridSearchCV и sklearn могут использоваться для перекрестной проверки набора данных для выбора наивысшего рейтинга точности, и ссылку на этот пост можно найти здесь: https://medium.com/mlearning-ai /get-stuck-in-to-gridsearchcv-to-predict-on-the-survivors-of-titanic-842b46941b7c»

Однако в этом посте я хотел использовать другой метод перекрестной проверки, используя функцию sklearn LogisticRegressionCV. Эта модель представляет собой функцию LogisticRegression, в которую записан код перекрестной проверки, поэтому нет необходимости использовать GridSearchCV.

Когда я обучил и подогнал модель, я добился точности 87,78%:

Затем я предсказал модель и добился точности 85%:

После того, как проверочный набор был спрогнозирован, я воспользовался sklearn-матрицей путаницы и классификационным_отчетом, чтобы отобразить точность этой модели.

Есть 34 примера 0, что показывает точность 89%, отзыв 100% и показатель f1 94%.

Имеется 22 примера из 1, что показывает точность 73%, отзыв 79% и показатель f1 76%.

Есть 29 примеров из 2, что показывает точность 91%, отзыв 76% и показатель f1 83%: