请求协助:基于Seaborn绘制混淆矩阵及图像预测代码开发
解决方案
一、基于Seaborn绘制混淆矩阵的代码
先导入所需依赖库,再在原有训练预测代码基础上添加可视化逻辑:
# 导入必要库 import seaborn as sns import matplotlib.pyplot as plt from sklearn.svm import SVC from sklearn.metrics import accuracy_score, confusion_matrix, classification_report # 原有训练与预测流程 model_SVC = SVC(C=1000,gamma=0.1, kernel='rbf') model_SVC.fit(X_train,Y_train) #CASIA2 predictions=model_SVC.predict(X_test) # 输出基础评估指标 print(accuracy_score(Y_test,predictions)) print(confusion_matrix(Y_test,predictions)) print(classification_report(Y_test,predictions)) # 绘制混淆矩阵 cm = confusion_matrix(Y_test, predictions) plt.figure(figsize=(8, 6)) # 生成带数值标注的热力图 sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['真实类别A', '真实类别B'], # 替换为你的实际类别名称 yticklabels=['预测类别A', '预测类别B']) plt.xlabel('真实标签') plt.ylabel('预测标签') plt.title('SVC模型混淆矩阵') plt.show()
关键参数说明:
annot=True:在热力图单元格内显示具体计数数值fmt='d':以十进制整数格式显示数值(混淆矩阵为计数型数据)xticklabels/yticklabels:需替换为数据集实际类别名称,比如「真实图像」「伪造图像」
二、单张图像预测代码
图像预测需严格遵循训练集的预处理流程,确保特征维度与训练数据一致:
import cv2 # 也可替换为PIL/Pillow库处理图像 def predict_single_image(image_path, model): # 1. 读取图像(示例为灰度模式,需与训练集读取方式一致) img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 2. 调整尺寸至训练集图像统一大小(示例为64x64,按需修改) img_resized = cv2.resize(img, (64, 64)) # 3. 展平为一维特征(匹配X_train的特征维度) img_flatten = img_resized.flatten().reshape(1, -1) # 4. 标准化/归一化(若训练时做了该操作,必须同步执行) # 示例:若训练用了StandardScaler,需加载对应scaler处理 # img_scaled = scaler.transform(img_flatten) # 5. 执行预测 pred = model.predict(img_flatten) # 6. 转换为可读标签(按需修改类别映射) return '伪造图像' if pred[0] == 1 else '真实图像' # 调用示例 pred_result = predict_single_image('test_sample.jpg', model_SVC) print(f'图像预测结果:{pred_result}')
注意事项:
- 预处理步骤必须与训练集完全对齐,否则会导致预测结果失效
- 若训练时使用了特征缩放工具(如
StandardScaler),需在预测时复用相同的缩放逻辑
内容的提问来源于stack exchange,提问作者Harikrishnan A
相关产品推荐
相关产品推荐

