利用SVM实现图像识别分类的python代码
时间: 2024-05-11 16:20:25 浏览: 118
以下是一个基于SVM的图像分类器的Python代码示例:
```python
import cv2
import numpy as np
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载图像数据和标签
data = []
labels = []
# 读取图像文件和标签
for i in range(1, 11):
for j in range(1, 11):
img = cv2.imread('images/{}/{}.png'.format(i, j), cv2.IMREAD_GRAYSCALE)
img = cv2.resize(img, (20, 20))
data.append(img.reshape(-1))
labels.append(i)
# 将数据和标签转换为numpy数组
data = np.array(data)
labels = np.array(labels)
# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42)
# 训练SVM模型
clf = svm.SVC(kernel='linear', C=1.0, gamma='scale')
clf.fit(X_train, y_train)
# 预测测试集
y_pred = clf.predict(X_test)
# 计算准确率
acc = accuracy_score(y_test, y_pred)
print('Accuracy: {:.2f}%'.format(acc * 100))
```
这个示例代码中,我们加载图像数据和标签,然后将它们转换为numpy数组。我们使用`train_test_split`函数将数据集划分为训练集和测试集。然后,我们使用`svm.SVC`函数训练一个SVM模型,并使用测试集进行预测。最后,我们计算准确率并输出结果。
请注意,这个示例代码中,我们使用了`cv2`库来读取和调整图像的大小。如果你没有安装OpenCV库,可以使用其他Python库来读取和调整图像大小,例如`PIL`库。此外,我们使用了线性核函数,你可以尝试其他核函数,例如`rbf`核函数,来比较它们的性能。
阅读全文