以下是一个使用softmax函数作为激励函数的神经网络模型的MATLAB代码,用来评定学生的贫困等级:
```matlab
% 准备数据
load poverty_dataset;
x = [avg_daily_expense; annual_expense; annual_frequency];
t = zeros(3, size(x, 2));
t(1, poverty_level == 0) = 1;
t(2, poverty_level == 1) = 1;
t(3, poverty_level == 2) = 1;
% 创建神经网络模型
net = feedforwardnet([10, 5]); % 两个隐藏层,分别有10和5个神经元
net.layers{end}.transferFcn = 'softmax'; % 设置输出层的激励函数为softmax
net.outputs{end}.processFcns = {'mapminmax'}; % 将输出值归一化到[0, 1]
% 划分训练集和测试集
net.divideFcn = 'dividerand';
net.divideMode = 'sample';
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio = 0.15;
net.divideParam.testRatio = 0.15;
% 训练神经网络模型
net.trainFcn = 'trainlm'; % 使用交叉熵损失函数进行训练
net.trainParam.epochs = 1000; % 最大迭代次数为1000
net.trainParam.showWindow = false; % 不显示训练窗口
net.trainParam.lr = 0.01; % 学习率为0.01
net.trainParam.beta1 = 0.9; % Adam算法的参数beta1
net.trainParam.beta2 = 0.999; % Adam算法的参数beta2
[net, tr] = train(net, x, t);
% 对剩余学生进行预测
x_test = [avg_daily_expense_test; annual_expense_test; annual_frequency_test];
y = net(x_test);
[~, y_pred] = max(y); % 将输出值最大的神经元作为预测结果
y_pred