本项目使用 MATLAB 对经典的鸢尾花(Iris)数据集进行数据探索性分析、离群点检测和多类分类。项目涵盖了数据可视化、相关性分析、异常值检测(3σ准则)以及基于支持向量机(SVM)的多分类预测,并通过混淆矩阵评估分类效果。
使用经典的 Fisher Iris 数据集(iris--鸢尾花数据.xlsx),包含:
- 样本数:150 条
- 特征数:4 个(花萼长度、花萼宽度、花瓣长度、花瓣宽度)
- 类别数:3 类(Setosa=0, Versicolor=1, Virginica=2)
- MATLAB R2020a 及以上版本
- 需要以下工具箱:
- Statistics and Machine Learning Toolbox(
fitcecoc,confusionchart) - Curve Fitting Toolbox(
createFit相关功能) - Deep Learning Toolbox(
plotconfusion,仅last.m使用)
- Statistics and Machine Learning Toolbox(
步骤1: 读取数据
└── 通过文件选择对话框加载 iris--鸢尾花数据.xlsx
步骤2: 数据可视化
├── 绘制花瓣长度直方图
├── 绘制花瓣宽度直方图
├── 计算4个特征两两之间的相关系数(共6组)
├── 绘制按类别分组的散点图
└── 绘制箱形图观察数据分布
步骤3: 离群点检测
├── 用户选择待检测的特征列
├── 计算该列的均值和标准差
└── 用 3σ 准则识别离群样本
步骤4: SVM 多分类
├── 用正常样本训练多类 SVM 分类器(fitcecoc)
└── 用训练好的模型预测离群样本的类别
步骤5: 评估
├── 计算分类准确率
└── 绘制混淆矩阵(confusionchart)
| 文件名 | 类型 | 功能描述 |
|---|---|---|
main.m |
主程序 | 完整的分析流程入口,包含数据读取、可视化、离群点检测、SVM分类和混淆矩阵评估 |
last.m |
主程序 | main.m 的早期版本,额外使用 plotconfusion 绘制混淆矩阵 |
iris--鸢尾花数据.xlsx |
数据文件 | 150条鸢尾花样本数据,含4个特征和1个类别标签 |
compute_confusion_matrix.m |
函数 | 手动计算混淆矩阵并调用绘图函数进行可视化 |
confusion_matrix1.m |
函数 | 使用 confusionmat + imagesc 绘制彩色混淆矩阵热力图 |
createFit.m |
函数 | MATLAB自动生成的高斯拟合函数(gauss5,5项高斯混合拟合) |
createFit1.m |
函数 | MATLAB自动生成的高斯拟合函数(gauss3,3项高斯混合拟合) |
对选定特征列计算均值 μ 和标准差 σ,若某样本满足:
|x - μ| > 3σ
则判定为离群点。
使用 fitcecoc 训练多类支持向量机:
- 将3类问题分解为多个二分类子问题
- 采用一对一(One-vs-One)编码策略
- 用正常样本训练,预测离群样本的类别归属
- 打开 MATLAB,将当前目录切换到项目文件夹
- 运行
main.m - 在弹出的文件选择对话框中选择
iris--鸢尾花数据.xlsx - 观察生成的直方图、散点图、箱形图
- 在命令行输入你认为存在离群点的列号(1-4)
- 程序自动完成离群点检测、SVM训练和分类评估
- 花瓣长度/宽度直方图
- 4个特征两两组合的分组散点图(共6张)
- 箱形图
- 离群点个数及索引
- SVM分类准确率
- 混淆矩阵图
├── main.m # 主程序(推荐运行此文件)
├── last.m # 早期版本主程序
├── iris--鸢尾花数据.xlsx # 鸢尾花数据集
├── compute_confusion_matrix.m # 混淆矩阵计算函数
├── confusion_matrix1.m # 混淆矩阵可视化函数
├── createFit.m # 高斯拟合函数(5项)
├── createFit1.m # 高斯拟合函数(3项)
└── README.md # 项目说明文档