Поддержка векторных машин с использованием 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 Новости 📰 | Еще .
Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇