Skip to content

Guevara111/Iris-Classification-MATLAB

Repository files navigation

基于 MATLAB 的鸢尾花(Iris)数据分类项目

项目简介

本项目使用 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 使用)

运行流程

主程序 main.m 的执行步骤:

步骤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项高斯混合拟合)

核心算法

1. 离群点检测 — 3σ准则

对选定特征列计算均值 μ 和标准差 σ,若某样本满足:

|x - μ| > 3σ

则判定为离群点。

2. 多类SVM分类 — ECOC(纠错输出码)

使用 fitcecoc 训练多类支持向量机:

  • 将3类问题分解为多个二分类子问题
  • 采用一对一(One-vs-One)编码策略
  • 用正常样本训练,预测离群样本的类别归属

使用方法

  1. 打开 MATLAB,将当前目录切换到项目文件夹
  2. 运行 main.m
  3. 在弹出的文件选择对话框中选择 iris--鸢尾花数据.xlsx
  4. 观察生成的直方图、散点图、箱形图
  5. 在命令行输入你认为存在离群点的列号(1-4)
  6. 程序自动完成离群点检测、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                   # 项目说明文档

About

基于 MATLAB 的鸢尾花(Iris)数据分类项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages