基于SVM算法的Iris鸢尾花模式识别系统
项目介绍
本项目是一个基于支持向量机(SVM)的自动化模式识别系统,专门用于经典Iris(鸢尾花)数据集的分类任务。系统通过机器学习完整流程——从原始数据加载、预处理、模型参数优化到预测结果评估及决策边界可视化,实现了对三种不同品种鸢尾花(Setosa, Versicolor, Virginica)的高精度识别。
功能特性
- 自动化数据流:集成数据加载、标签数值化编码、数据集划分及标准化全流程。
- 模型优化机制:内置基于网格搜索(Grid Search)的超参数优化功能,通过交叉验证自动寻找最优的惩罚因子与核函数参数。
- 多分类策略:采用一对一(One-vs-One)设计框架,利用二分类支持向量机解决多类别分类问题。
- 深度可视化:提供混淆矩阵分析模型误差,并利用主成分分析(PCA)降维技术直观展示非线性决策边界。
系统要求
- 运行环境:MATLAB R2018b 或更高版本。
- 必备工具箱:Statistics and Machine Learning Toolbox(统计与机器学习工具箱)。
实现逻辑与功能说明
#### 1. 数据准备与预处理
系统直接调用MATLAB内置的鸢尾花数据集,提取150个样本的四维特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)。通过唯一值提取技术将字符串标签转换为数值编码(1、2、3),从而适配算法计算需求。
#### 2. 分层数据划分
为了保持类别平衡,系统对三类鸢尾花分别执行70%训练集与30%测试集的随机划分。通过设定固定的随机种子(Random Seed),确保实验结果的可复现性。
#### 3. Z-Score 特征标准化
系统计算训练集的均值(Mean)和标准差(Std),对原始特征进行标准化处理,消除不同物理量纲对模型训练的影响。测试集也使用相同的训练集参数进行缩放,以保证数据分布的一致性。
#### 4. 参数空间网格搜索
系统定义了惩罚因子(BoxConstraint)和核函数缩放参数(KernelScale)的取值范围。采用嵌套循环遍历参数组合,通过 5 折交叉验证(5-fold Cross-Validation)计算平均分类损失,最终筛选出测试精度最高的参数对作为最优配置。
#### 5. 核心算法构建
基于最优参数,系统调用 fitcecoc 函数构建多类分类模型。该模型以带有径向基(Gaussian/RBF)核函数的 SVM 为基本学习器,采用 One-vs-One 策略来处理三分类任务。
#### 6. 模型评估与性能输出
利用训练好的模型对测试集进行盲测,计算分类准确率(Accuracy)。系统在命令行窗口直观输出寻优后的最优 C 值、最优 Sigma 值以及训练集和测试集的具体准确率指标。
#### 7. 结果可视化分析
系统生成两类图形化反馈:
- 混淆矩阵:展示每个类别的预测准确率及误报、漏报分布,反映模型对不同品种识别的难易程度。
- 决策边界图:通过主成分分析(PCA)将四维特征降至二维,并在降维后的特征空间内重新训练模型。利用网格点预测技术绘制填色区域图,展示不同类别在非线性核函数下的分类边界,并同步标注训练集与测试集点的分布位置。
关键函数与算法细节
- unique 函数:用于实现类别名称到数值索引的映射。
- templateSVM 函数:定义了带有径向基核(RBF)的 SVM 模板,支持配置惩罚因子。
- fitcecoc 函数:核心多分类框架,通过集成多个二分类器实现多目标识别。
- kfoldLoss 函数:执行交叉验证后的损失计算,指导超参数的选取。
- pca 函数:通过正交变换实现特征降维,使得高维分类边界能够在二维平面直观呈现。
- contourf 函数:绘制填色等高线图,用于表达分类器的决策区域。