Python 机器学习入门:手把手实现鸢尾花数据集分类
前言
一、项目背景与核心目标
二、核心数据解析:鸢尾花数据集
三、核心算法原理:K 近邻(KNN)
四、完整代码实现
五、代码核心功能解读
六、运行结果与解读
七、进阶方向
八、总结
前言
鸢尾花数据集分类是机器学习领域的入门级项目,无需复杂的环境配置和数据预处理,小白短时间内便可完成从代码实现到结果分析的全流程。本文将从项目背景、数据解析、核心算法原理到完整代码实现,带你吃透这个经典入门案例,掌握机器学习分类问题的通用逻辑。
一、项目背景与核心目标
1. 项目定位
鸢尾花分类是机器学习多分类问题的经典入门案例,使用 sklearn 内置的鸢尾花(Iris)数据集,核心目标是:通过鸢尾花的 4 个物理特征(花萼长度 / 宽度、花瓣长度 / 宽度),让模型学会区分 3 种不同的鸢尾花品种(setosa、versicolor、virginica)。
2. 为什么选这个项目?
- 数据轻量化:内置数据集无需手动下载,150 个样本 + 4 个特征。
- 逻辑简单化:使用 K 近邻(KNN)算法,原理 “近朱者赤,近墨者黑”,无需复杂数学公式。
- 流程完整化:覆盖 “加载数据→划分数据集→模型训练→评估→预测” 全流程,贴合真实机器学习项目。
- 结果可视化:特征分布直观。
二、核心数据解析:鸢尾花数据集
在写代码前,先搞懂我们处理的是什么数据。
1. 数据集基本信息
鸢尾花数据集是 sklearn 内置的经典数据集,包含 150 个样本,分为 3 个品种(每种 50 个样本),每个样本包含 4 个数值型特征:
| 特征名称 | 含义 | 单位 |
|---|---|---|
| sepal length (cm) | 花萼长度 | 厘米 |
| sepal width (cm) | 花萼宽度 | 厘米 |
| petal length (cm) | 花瓣长度 | 厘米 |
| petal width (cm) | 花瓣宽度 | 厘米 |
标签用 0/1/2 分别对应 3 个品种:
- 0 → setosa(山鸢尾)
- 1 → versicolor(变色鸢尾)
- 2 → virginica(维吉尼亚鸢尾)
2. 数据加载与直观查看
通过几行代码就能快速了解数据结构:
from sklearn.datasets import load_iris
import pandas as pd
# 加载数据
iris = load_iris()
# 转换为DataFrame,方便查看
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['品种'] = [iris.target_names[i] for i in iris.target]
# 打印前5行
print(df.head())
输出结果能清晰看到 setosa 品种的特征规律(花瓣长度 / 宽度普遍偏小):
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 品种
0






