matlab
by lqx
人工智能算法模型
BP人工神经网络模型
% 1. 准备数据
years = [1:10]; % 年份
populations = [30.55, 36.55, 46.33, 55.62, 70.96, 82.54, 93.99, 105.71, 122.78, 131.67]; % 人口数量(单位:亿)
% 2. 创建并配置神经网络模型
hiddenLayerSize = 5; % 隐藏层神经元数量
net = feedforwardnet(hiddenLayerSize); % 创建前馈神经网络模型
net.trainParam.showWindow = false; % 不显示训练进度窗口
% 3. 数据归一化
minYear = min(years);
maxYear = max(years);
normalizedYears = (years - minYear) / (maxYear - minYear); % 归一化年份
minPopulation = min(populations);
maxPopulation = max(populations);
normalizedPopulations = (populations - minPopulation) / (maxPopulation - minPopulation); % 归一化人口数量
% 4. 划分数据集
inputs = normalizedYears;
targets = normalizedPopulations;
net.divideParam.trainRatio = 0.7; % 训练集比例
net.divideParam.valRatio = 0.15; % 验证集比例
net.divideParam.testRatio = 0.15; % 测试集比例
% 5. 训练神经网络
net = train(net, inputs, targets);
% 6. 使用训练好的模型进行预测
predictedPopulations = net(inputs);
% 7. 反归一化得到预测结果
predictedPopulations = predictedPopulations * (maxPopulation - minPopulation) + minPopulation;
% 显示结果
plot(years, populations, 'b-o', years, predictedPopulations, 'r-*');
legend('真实人口数量', '预测人口数量');
xlabel('年份');
ylabel('人口数量(亿)');
% 问题描述:根据花瓣长度和宽度判断是哪种鸢尾花,0表示Iris-setosa,1表示Iris-versicolor。
% 原始数据
data = [...
5.1 3.5 0;
4.9 3.0 0;
4.7 3.2 0;
7.0 3.2 1;
6.4 3.2 1;
6.9 3.1 1];
% 特征矩阵和标签矩阵
features = data(:, 1:2)';
labels = data(:, 3)';
% 创建并配置神经网络模型
hiddenLayerSize = 4; % 隐藏层神经元数量
net = patternnet(hiddenLayerSize); % 创建模式识别神经网络模型
% 划分数据集
net.divideParam.trainRatio = 0.7; % 训练集比例
net.divideParam.valRatio = 0.15; % 验证集比例
net.divideParam.testRatio = 0.15; % 测试集比例
% 训练神经网络
net = train(net, features, labels);
% 使用训练好的模型进行分类预测
predictedLabels = net(features);
% 将预测结果转换为类别标签
predictedLabels = round(predictedLabels);
% 计算分类准确率
accuracy = sum(predictedLabels == labels) / length(labels);
% 显示结果
disp('分类准确率:'+ num2str(accuracy));