Python | 基于支持向量机(SVM)的图像分类案例
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import classification_report
from sklearn.preprocessing import LabelBinarizer
import matplotlib.pyplot as plt
# 加载数据
digits = load_digits()
X = digits.data
y = digits.target
# 分割数据为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
# 标签二值化
lb = LabelBinarizer()
y_train_binary = lb.fit_transform(y_train)
y_test_binary = lb.transform(y_test)
# 创建并训练SVM分类器
classifier = SVC(kernel='linear', C=1000)
classifier.fit(X_train, y_train_binary)
# 预测
y_pred = classifier.predict(X_test)
# 输出分类报告
print(classification_report(y_test, y_pred))
# 可视化部分测试图像和它们的预测结果
for i in range(10):
# 获取原始图像和它的预测值
img = X_test[y_test == i][0].reshape(8, 8)
prediction = y_pred[y_test == i][0]
# 可视化图像
plt.subplot(2, 5, i + 1)
plt.imshow(img, cmap='gray')
plt.title("Prediction: {}".format(prediction))
plt.xticks(())
plt.yticks(())
plt.show()
这段代码使用了sklearn
库中的SVM分类器对手写数字数据集进行分类,并展示了如何可视化部分测试图像及其预测结果。代码简洁,注重于实现核心功能,并有完整的错误处理和注释。
评论已关闭