支持向量机(SVM)是一种监督机器学习算法,可用于分类和回归任务。在本文中,我们将重点关注使用SVM进行图像分类。
当计算机处理图像时,它将其视为二维像素阵列。数组的大小对应于图像的分辨率,例如,如果图像是200像素宽和200像素高,则数组的尺寸为200 x 200 x 3。前两个维度分别表示图像的宽度和高度,而第三个维度表示RGB颜色通道。数组中的值范围为0到255,表示每个点处像素的强度。
为了使用SVM对图像进行分类,我们首先需要从图像中提取特征。这些特征可以是像素的颜色值、边缘检测,甚至是图像中存在的纹理。一旦提取了特征,我们就可以将它们用作SVM算法的输入。
SVM算法通过寻找在特征空间中分离不同类的超平面来工作。支持向量机背后的关键思想是找到最大化边缘的超平面,边缘是不同类的最近点之间的距离。最接近超平面的点称为支持向量。
使用SVM进行图像分类的主要优点之一是它们可以有效地处理高维数据,例如图像。此外,SVM比其他算法(如神经网络)更不容易过拟合。
在机器学习中,模型由输入数据和预期输出数据训练。
步骤1:导入所需的库
import pandas as pd
import os
from skimage.transform import resize
from skimage.io import imread
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
步骤2:加载图像并将其转换为数据帧
Categories=['cats','dogs']
flat_data_arr=[] #input array
target_arr=[] #output array
datadir='IMAGES/'
#path which contains all the categories of images
for i in Categories:
print(f'loading... category : {
i}')
path=os.path.join(datadir,i)
for img in os.listdir(path):
img_array=imread