matlab鸢尾花数据集grnn
时间: 2025-05-22 09:47:01 浏览: 25
### MATLAB 中基于 GRNN 的鸢尾花数据集处理
#### 数据准备
在 MATLAB 中,可以利用 `fisheriris` 数据集作为鸢尾花数据的内置资源。该数据集包含了 150 条样本记录以及对应的类别标签。通过加载此数据并将其划分为训练集和测试集来完成模型构建前的数据准备工作。
```matlab
load fisheriris % 加载鸢尾花数据集
X = meas; % 特征矩阵 (输入变量)
Y = species; % 类别标签 (目标输出)
% 将字符串标签转换为数值编码
uniqueClasses = unique(Y);
classLabels = categorical(cellstr(uniqueClasses));
targetClassIdx = arrayfun(@(x) find(strcmp(x, classLabels)), Y);
% 划分训练集与测试集
cvp = cvpartition(size(X,1),'HoldOut',0.3);
trainInds = training(cvp);
testInds = test(cvp);
XTrain = X(trainInds,:); % 训练特征
YTrain = targetClassIdx(trainInds); % 训练标签
XTest = X(testInds,:); % 测试特征
YTest = targetClassIdx(testInds); % 测试标签
```
#### 构建 GRNN 模型
MATLAB 提供了专门用于创建广义回归神经网络 (`newgrnn`) 的工具箱函数。以下是具体实现过程:
```matlab
spreadValue = 0.8; % 设置扩展参数 σ 值
net = newgrnn(XTrain,YTrain, spreadValue); % 创建 GRNN 网络结构
view(net); % 可视化网络架构
```
此处设置了一个重要的超参——扩散因子 \( \sigma \)[^1] ,它决定了高斯核宽度从而影响预测精度和平滑度之间的平衡关系。
#### 模型评估
应用已建立好的 GRNN 对未知样例进行分类判断,并计算准确率指标衡量性能表现。
```matlab
YPred = net(XTest'); % 使用测试数据做预测
YPredLabel = round(YPred');
accuracyRate = sum(diag(confusionmat(YTest(:), YPredLabel))) / numel(YTest)*100;
fprintf('Accuracy Rate on Test Set is %.2f%%\n', accuracyRate);
```
以上脚本实现了完整的流程演示,包括但不限于数据预处理、GRNN 初始化配置直至最终效果验证环节[^2] 。值得注意的是,在实际操作过程中可能还需要进一步调优诸如传播常数之类的控制要素以获取更佳的结果。
---
阅读全文
相关推荐


















