Поддержка векторных машин с использованием Python

Мы собираемся понять SVM с помощью проекта, проанализировав знаменитый набор данных iris!

Набор данных о цветке ириса

Набор данных цветков ириса или набор данных ириса Фишера - это многомерный набор данных, представленный сэром Рональдом Фишером в 1936 году в качестве примера дискриминантного анализа.

Набор данных состоит из 50 образцов каждого из трех видов ириса (Iris setosa, Iris virginica и Iris versicolor), то есть всего 150 образцов. Для каждого образца были измерены четыре характеристики: длина и ширина чашелистиков и лепестков в сантиметрах.

Вот изображение трех разных типов радужной оболочки глаза:

Набор данных ириса содержит измерения для 150 цветков ириса трех разных видов.

Три класса в наборе данных Iris:

Ирис сетоса (n = 50)
Ирис разноцветный (n = 50)
Ирис вирджинский (n = 50)

Четыре особенности набора данных Iris:

длина чашелистика в см
ширина чашелистика в см
длина лепестка в см
ширина лепестка в см

Получение данных

Используйте seaborn для получения данных радужной оболочки, используя: iris = sns.load_dataset (‘iris’)

Давайте визуализируем данные и приступим к работе!

Исследовательский анализ данных

Давайте проверим наши навыки визуализации данных! & создать несколько графиков, но нам нужно импортировать некоторые библиотеки, которые нам понадобятся:

Создание парного графика набора данных для проверки:

Какие виды цветов кажутся наиболее отделимыми?

Создайте график kde длины чашелистика в зависимости от ширины чашелистика для цветов сетоса

Тренировка тестового сплит

Разделите свои данные на обучающий набор и набор для тестирования

Обучение нашей модели

Теперь мы собираемся обучить машинный классификатор опорных векторов.

Вызовите модель SVC () из sklearn и подгоните модель к обучающим данным.

Оценка модели

Теперь нам нужно получить прогнозы от модели и создать матрицу путаницы и отчет о классификации.

Ух ты! До сих пор наша модель показала себя неплохо! Но давайте посмотрим, сможем ли мы настроить параметры, чтобы попытаться стать еще лучше.

Это очень маловероятно, и вы, вероятно, будете удовлетворены этими результатами в реальности, потому что набор данных довольно мал, но я просто хочу, чтобы вы знали, как использовать GridSearch.

Gridsearch

Найти правильные параметры (например, какие значения C или гамма использовать) - непростая задача! Но, к счастью, мы можем немного полениться и просто попробовать несколько комбинаций и посмотреть, что работает лучше всего!

Идея создания «сетки» параметров и простого опробования всех возможных комбинаций называется Gridsearch, этот метод достаточно распространен, поэтому Scikit-learn имеет эту функциональность, встроенную в GridSearchCV! & CV означает перекрестную проверку.

GridSearchCV использует словарь, который описывает параметры, которые следует попробовать, и модель для обучения. Сетка параметров определяется как словарь, где ключи - это параметры, а значения - это настройки, которые необходимо проверить.

Сначала вам нужно импортировать GridsearchCV из SciKit Learn.

А теперь создайте словарь с именем param_grid и заполните некоторые параметры для C и гаммы.

Одна из замечательных особенностей GridSearchCV заключается в том, что это метаоценка. Он берет оценщик, такой как SVC, и создает новый оценщик, который ведет себя точно так же - в данном случае, как классификатор. Вы должны добавить refit = True и выбрать подробный для любого числа, которое вы хотите, чем выше число, тем более подробным (подробный означает только текстовый вывод, описывающий процесс).

То, что делает подгонка, немного сложнее, чем обычно. Во-первых, он запускает тот же цикл с перекрестной проверкой, чтобы найти лучшую комбинацию параметров. Как только у него будет наилучшая комбинация, он снова запускается для всех данных, переданных для соответствия (без перекрестной проверки), чтобы построить единую новую модель с использованием наилучшей настройки параметров.

Создайте объект GridSearchCV и подгоните его под данные обучения.

Вы получите следующий результат

Вы можете проверить лучшие параметры, найденные GridSearchCV в атрибуте best_params_, и лучшую оценку в атрибуте best \ _estimator_:

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

Удалось ли вам стать лучше?

Здесь вы можете четко заметить, что разница между нашей матрицей недоразумений и отчетом о классификации до и после использования отчета о классификации очень мала (это связано с тем, что в нашем случае набор данных очень мал), и все, что я хочу, - это показать вам, как Gridsearch работает и что именно он делает!

Надеюсь, эта статья может быть вам полезна.

Продолжай учиться!

Присоединяйтесь к FAUN: Веб-сайт 💻 | Подкаст 🎙️ | Twitter 🐦 | Facebook 👥 | Instagram 📷 | Группа Facebook 🗣️ | Группа Linkedin 💬 | Slack 📱 | Cloud Native Новости 📰 | Еще .

Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇