% 关闭报警信息
warning off 
% 关闭开启的图窗
close all 
% 清空变量
clear 
% 清空命令行
clc

% 导入模型
load('net7CNN3.mat');

% 读取新数据
data = xlsread('7测试.xlsx');
% 使用所有行作为测试集
test_idx = 1:size(data, 1);
% 提取测试数据
new_data= data(test_idx, 1:7)';
% 真实标签
true_labels = data(test_idx, 8);
t_text = categorical(true_labels);
   % 归一化每行数据
min_val = min(new_data, [], 2); % 每行的最小值
max_val = max(new_data, [], 2); % 每行的最大值
normalized_data = (new_data - min_val) ./ (max_val - min_val); % 归一化公式

% 数据平铺
M=size(normalized_data,2);
normalized_data = double(reshape(normalized_data, 7, 1,1,M));

% 进行分类
predicted_labels = classify(net, normalized_data);


% 预测标签
predicted_labels = double(predicted_labels); % 将预测标签转换为double类型
predicted_labels = predicted_labels(:); % 转换为列向量


% 计算准确率
accuracy = sum(true_labels == predicted_labels) / length(true_labels);

% 计算混淆矩阵
confusion_matrix = confusionmat(true_labels, predicted_labels);

% 计算精准率、召回率、F1值
precision = diag(confusion_matrix) ./ sum(confusion_matrix, 2);
recall = diag(confusion_matrix) ./ sum(confusion_matrix, 1)';
f1_score = 2 * (precision .* recall) ./ (precision + recall);
n_classes = 4;

% 计算4分类AUC值
n_classes = 4; % 类别数量
scores = zeros(length(true_labels), n_classes); % 存储每个样本的类别得分

% 计算每个样本在每个类别的得分
for i = 1:length(true_labels)
    for j = 1:n_classes
        if predicted_labels(i) == j
            scores(i, j) = 1;
        end
    end
end

% 计算AUC值
auc = zeros(n_classes, 1); % 存储每个类别的AUC值
for i = 1:n_classes
    [~, ~, ~, auc(i)] = perfcurve(true_labels, scores(:, i), i);
end

% 打印每个类别的AUC值
for i = 1:n_classes
    fprintf('类别 %d 的AUC值: %.4f\n', i, auc(i));
end
% 计算微平均AUC
micro_auc = sum(auc) / n_classes;
% 绘制4分类ROC曲线
figure;
hold on;
colors = {'b', 'r', 'g', 'm'}; % 定义每个类别的颜色
for i = 1:n_classes
    [~, ~, ~, auc(i)] = perfcurve(true_labels, scores(:, i), i);
    [X, Y, T, ~] = perfcurve(true_labels, scores(:, i), i);
    plot(X, Y, colors{i});
end
hold off;
xlabel('False Positive Rate');
ylabel('True Positive Rate');
title('4-Class ROC Curve');
legend('Class 1', 'Class 2', 'Class 3', 'Class 4');

% 显示结果
fprintf('准确率: %.4f\n', accuracy);
fprintf('精准率: %.4f\n', mean(precision));
fprintf('召回率: %.4f\n', mean(recall));
fprintf('F1值: %.4f\n', mean(f1_score));
fprintf('微平均AUC: %.4f\n', micro_auc);
基于CNN的多分类模型训练与评估

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

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