本项目基于经典的 Iris 数据集,利用支持向量机(SVM)算法构建分类模型,旨在对鸢尾花的三种不同类别进行分类。通过本项目,展示了机器学习模型从数据预处理、特征分析、模型训练到模型评估的完整流程,并为未来的模型优化和预测提供了基础。
- 来源:Iris 数据集是一个经典的机器学习数据集,包含 150 条记录,分为 3 类,每类 50 条记录。
- 特征:
sepal_length(萼片长度)sepal_width(萼片宽度)petal_length(花瓣长度)petal_width(花瓣宽度)
- 目标:预测鸢尾花属于以下三类中的哪一类:
- Iris-setosa
- Iris-versicolor
- Iris-virginica
├── data_sets/ # 数据文件夹
│ └── IRIS.csv # Iris 数据集
├── models/ # 模型文件夹
│ └── svm_model_0.9666.pkl # 已保存的 SVM 模型
├── notebooks/ # Jupyter 笔记本
│ └── main.ipynb # 数据分析与训练代码
├── doc/
│ └── 使用SVM进行鸢尾花的分类.docx # 项目报告
├── README.md # 项目说明文件
└── requirements.txt # 依赖库
请确保系统已安装以下工具和环境:
- Python 3.7 或更高版本
- Jupyter Notebook 或支持
.ipynb文件的 IDE
运行以下命令安装所需依赖:
pip install -r requirements.txt- 加载数据:将
IRIS.csv文件放入datas/文件夹中。 - 训练模型:打开
notebooks/main.ipynb文件,运行所有单元格以训练 SVM 模型。 - 保存模型:训练完成后,模型会保存到
models/svm_model.pkl文件中。 - 预测:使用保存的模型对新数据进行分类预测。
- 数据的加载与探索性数据分析(EDA)
- 数据分布的可视化,包括箱线图和散点图
- 使用支持向量机(SVM)进行分类任务
- 使用
train_test_split划分数据集(训练集 80%,测试集 20%) - 对模型进行训练,并使用准确率评估
- 使用保存的 SVM 模型对测试集和新数据进行分类预测
- 通过混淆矩阵、分类报告等工具评估模型性能
- 本项目的 SVM 模型在测试集上的准确率达到了 96.67%
| 文件名 | 描述 |
|---|---|
data_SETS/IRIS.csv |
Iris 数据集 |
notebooks/main.ipynb |
项目的 Jupyter Notebook 文件,包含完整代码和分析 |
models/svm_model.pkl |
训练后的 SVM 模型文件 |
requirements.txt |
Python 依赖库列表 |
使用保存的 SVM 模型直接进行预测:
import joblib
import pandas as pd
# 加载模型
model = joblib.load('../model/models/svm_model.pkl')
# 加载新数据
new_data = pd.DataFrame({
'sepal_length': [5.1, 6.7],
'sepal_width': [3.5, 3.0],
'petal_length': [1.4, 5.2],
'petal_width': [0.2, 2.3]
})
# 进行预测
predictions = model.predict(new_data)
print("预测结果:", predictions)-
模型优化:
- 尝试其他分类算法(如随机森林、XGBoost)并比较性能。
- 进行超参数调优(如调整 SVM 的核函数、C 值、gamma 值)。
-
数据扩展:
- 引入更多样本或使用增强数据来提高模型的泛化能力。
-
部署模型:
- 将模型部署到 Web 应用程序(如 Flask 或 Django)中,提供在线分类服务。
-
自动化管道:
- 使用工具(如
MLflow或Airflow)创建完整的机器学习工作流。
- 使用工具(如
如有任何问题或建议,请联系:
- 开发者:简希 (Jian Xi)
- 邮箱:jianxi.erin@gmail.com
- GitHub:简希 主页
希望本项目对您有所帮助!