使用Scikit-learn评估图像分类模型的性能

本教程演示如何使用 sklearn.metrics.accuracy_score 函数评估图像分类模型的性能。

代码示例pythonfrom sklearn.metrics import accuracy_scoreimport numpy as npimport matplotlib.pyplot as pltfrom keras.preprocessing.image import ImageDataGeneratorimport random

...(假设您已经定义了模型、IMG_HEIGHT、IMG_WIDTH 和 val_dir)...

模型测试# 加载测试集数据生成器test_image_generator = ImageDataGenerator( rescale=1. / 255 # 归一化)

test_data_gen = test_image_generator.flow_from_directory( batch_size=1, # 批大小为1,每次测试一个样本 directory=val_dir, # 测试集目录 shuffle=False, # 不打乱数据 target_size=(IMG_HEIGHT, IMG_WIDTH), # 图像大小 class_mode='categorical' # 分类方式)

获取测试集样本数total_test = len(test_data_gen)print('Total testing data batches : ', total_test)

进行预测并计算准确率y_pred = model.predict(test_data_gen) # 对测试集进行预测y_pred_class = np.argmax(y_pred, axis=1) # 获取预测结果的类别y_true_class = test_data_gen.classes # 获取真实标签的类别class_names = list(test_data_gen.class_indices.keys()) # 获取类别名称accuracy = accuracy_score(y_true_class, y_pred_class) # 计算准确率print('Accuracy: {:.2f}%'.format(accuracy * 100))

随机选择一些测试样本进行展示for i in range(5): rand_num = random.randint(0, total_test - 1) # 随机选择一个样本 img, label = test_data_gen[rand_num] # 获取样本图像和标签 img = img[0] # 从batch中取出单个图像 label_name = class_names[np.argmax(label)] # 获取标签名称 pred_name = class_names[y_pred_class[rand_num]] # 获取预测结果名称 plt.title('true label: {}, predicted label: {}'.format(label_name, pred_name)) plt.imshow(img) plt.show()

代码解释

  1. 加载测试数据: 使用 ImageDataGenerator 加载和预处理测试集图像。2. 进行预测: 使用训练好的模型对测试数据进行预测。3. 计算准确率: 使用 accuracy_score 函数计算模型预测的准确率。4. 可视化预测结果: 随机选择一些测试样本,并显示图像、真实标签和预测标签。

总结

这段代码展示了如何使用 sklearn.metrics.accuracy_score 函数评估图像分类模型的性能。 您可以使用此代码作为评估您自己的图像分类模型的起点。

使用Scikit-learn评估图像分类模型的性能

原文地址: https://www.cveoy.top/t/topic/dklV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录