svm图像二分类实例代码
时间: 2023-08-06 19:08:33 浏览: 95
SVM二分类代码
以下是一个基于 SVM 的图像二分类示例代码,其中使用了 scikit-learn 库:
```python
import cv2
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import svm
# 读取图像数据
image_data = []
labels = []
for i in range(1, 11):
for j in range(1, 11):
img = cv2.imread(f"images/{i}_{j}.jpg", 0)
img = cv2.resize(img, (32, 32))
image_data.append(img.flatten())
labels.append(i)
# 将数据划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(image_data, labels, test_size=0.2, random_state=42)
# 创建 SVM 分类器
clf = svm.SVC(kernel='linear', C=1)
# 训练 SVM 分类器
clf.fit(X_train, y_train)
# 评估分类器的性能
accuracy = clf.score(X_test, y_test)
print(f"Accuracy: {accuracy}")
# 预测新图像的标签
new_img = cv2.imread("images/1_15.jpg", 0)
new_img = cv2.resize(new_img, (32, 32))
new_data = new_img.flatten()
prediction = clf.predict([new_data])
print(f"Prediction: {prediction}")
```
这段代码假设图像数据已经保存在 images 目录中。首先,它将每个图像读取为一个向量,并将其附加到 `image_data` 列表中。相应的标签存储在 `labels` 列表中。然后,利用 `train_test_split` 函数将数据划分为训练集和测试集。接下来,创建一个 SVM 分类器,并使用 `fit` 函数训练它。最后,使用 `score` 函数评估分类器的性能,并使用 `predict` 函数预测新图像的标签。
阅读全文