Реализация классификации изображений с помощью алгоритмов машинного обучения с использованием языка python.

Сегодня мы реализуем K ближайших соседей (KNN), наивный байесовский классификатор, классификатор дерева решений (DTC), классификатор случайного леса (RFC), ExtraTressClassifier (ETC), стохастический градиентный спуск (SGD), метод опорных векторов (SVM), классификатор AdaBoost ( ABC), алгоритмы классификатора повышения градиента гистограммы (HGBC) и классификатора повышения градиента (GBC) в классификации изображений Набор данных. Прежде чем читать эту историю, пожалуйста, прочитайте предыдущую историю для лучшего понимания.

Сбор данных

Сегодня мы будем использовать Набор данных ультразвукового изображения груди от Kaggle. Набор данных содержит три папки изображений.

  1. Доброкачественный
  2. Злокачественный
  3. Нормальный

Я использую Google Colab для своей работы. Я помещаю данные на свой гугл диск. Итак, сначала смонтируйте данные с гугл диска в colab. Затем разархивируйте файл. Разархивированная папка содержит три папки (Доброкачественные, Злокачественные, Нормальные). Теперь посмотрите, сколько изображений принадлежит каждой папке.

Benign : 891, malignant 421 and normal 266

Набор данных сильно несбалансирован. В следующей статье я покажу, как сбалансировать данные. Теперь посмотрите на производительность с этим набором данных о дисбалансе.

Предварительная обработка данных

Предварительная обработка данных является важной частью машинного обучения. Набор данных содержит изображение и маску (сегментированное изображение) этого изображения. изображение маски не нужно тренировать. Итак, удалите эти изображения маски и возьмите только исходные изображения. Я конвертирую изображения в формат оттенков серого и изменяю их размер до формы (48,48,1), а затем сглаживаю (48*48*1) изображения. Необходимо преобразовать метку в числовую. Так что также кодируйте метки.

Теперь наши данные готовы к разделению на обучающие и тестовые данные. После разделения изображений нормализуйте изображения, разделенные на 255,0.

Сделайте функцию для легкой работы

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

Наивный байесовский классификатор

Алгоритм Наивный Байес, основанный на теореме Байеса. Sklearn предоставляет алгоритмы Gaussian, BernouliNB, Complement, Categorical и Out-of-core наивные байесовские алгоритмы. Среди них мы используем BernouliNB из-за его высокой точности.

Accuracy :
BernoulliNB(alpha=0.7)   :   53.205128205128204%

Классификатор дерева решений (DTC)

DTC — это древовидный классификатор. Наивный Байес имеет очень низкую точность. Теперь попробуйте DTC и обратите внимание. Вы также можете настроить параметры и оценить производительность модели.

DecisionTreeClassifier (критерий = «энтропия», random_state = 42): 58,333333333333336%

K ближайших соседей (KNN)

Дерево решений немного обновляется. Теперь попробуйте использовать KNN и обратите внимание. Попробуйте настроить параметры и обратите внимание на точность.

KNeighborsClassifier(n_jobs=100, n_neighbors=3, weights='distance')   :   66.66666666666666%

Стохастический градиентный спуск (СГД)

Настройте параметры по своему усмотрению. И обратите внимание на производительность.

SGDClassifier()   :   69.23076923076923%

Машина опорных векторов (SVM)

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

LinearSVC(max_iter=2000, tol=0.001)   :   69.87179487179486%

Давайте попробуем некоторые методы ансамбля алгоритмов машинного обучения.

Классификатор Adaboost (ABC)

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

AdaBoostClassifier()   :   58.333333333333336%

Классификатор повышения градиента (GBC)

Это еще один ансамблевый метод. Посмотрим, как он может учиться.

GradientBoostingClassifier()   :   63.46153846153846%

Классификатор случайного леса (RFC)

RFC — мой любимый алгоритм. Это ансамблевая техника дерева решений. Настройте алгоритмы и обратите внимание на производительность.

RandomForestClassifier(random_state=42)   :   70.51282051282051%

Классификатор дополнительных деревьев (ETC)

ETC — чрезвычайно рандомизированный древовидный классификатор. Поэкспериментируйте и настройте также этот алгоритм и обратите внимание на разницу в производительности.

ExtraTreesClassifier(random_state=42)   :   74.35897435897436%

Классификатор повышения градиента гистограммы (HGBC)

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

HistGradientBoostingClassifier(loss='categorical_crossentropy', random_state=42)   :   75.0%

Сравните производительность модели

Анализ

Хотя классификация изображений дает высокую точность моделей глубокого обучения, мы стараемся использовать алгоритмы машинного обучения и наблюдаем за производительностью. Для этого набора данных алгоритм повышения градиента гистограммы дает высокую точность, а затем классификаторы дополнительных деревьев дают вторую высокую точность. Random Forest, SVM и SGD дают сравнительно хорошую точность.

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

пожалуйста, следуйте и как. Спасибо. Счастливого обучения :)