BP神经网络的有标签分类Matlab代码
% 导入Excel数据
filename = 'data.xlsx'; % Excel文件名
data = xlsread(filename);% 分离特征和标签
X = data(:, 1:end-1); % 特征数据
Y = data(:, end); % 标签数据% 将标签转换为独热编码形式
Y_one_hot = full(ind2vec(Y'));% 创建BP神经网络
hiddenLayerSize = 10; % 可以根据需要调整隐藏层大小
net = patternnet(hiddenLayerSize);% 设置训练函数为Levenberg-Marquardt
net.trainFcn = 'trainlm';% 分割数据为训练集、验证集和测试集
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;% 训练神经网络
[net,tr] = train(net, X', Y_one_hot);% 测试神经网络
outputs = net(X');
errors = gsubtract(Y_one_hot,outputs);
performance = perform(net,Y_one_hot,outputs);% 将输出转换回类别标签
[~, predicted] = max(outputs);
[~, actual] = max(Y_one_hot);% 计算分类准确率
accuracy = sum(actual == predicted) / length(actual) * 100;
fprintf('分类准确率: %.2f%%\n', accuracy);
运行结果:
分类准确率: 98.37%