鸢尾花案例之查看数据集
1 课程概览
本课开始KNN算法的实战案例——鸢尾花分类。首先介绍鸢尾花数据集的结构(特征、标签、类别),然后使用scikit-learn的load_iris函数加载数据集,详细查看数据集的各项属性(data、target、target_names、feature_names、DESCR等),为后续数据预处理和模型训练做准备。
2 核心概念与定义
- 鸢尾花数据集(Iris Dataset):scikit-learn自带的经典分类数据集,共150条数据,3个类别,4个特征。
- load_iris:sklearn.datasets模块中加载鸢尾花数据集的函数。
- Bunch:数据集的类型,类似字典,可通过键访问值。
- 特征(Feature):花萼长度、花萼宽度、花瓣长度、花瓣宽度(4个,单位厘米)。
- 标签(Target):鸢尾花类别,用0、1、2表示三种花。
- target_names:标签对应的类别名称。
3 算法与模型详解
3.1 鸢尾花数据集结构
特征(4列):
| 特征名 | 含义 | 单位 |
|---|---|---|
| sepal length | 花萼长度 | cm |
| sepal width | 花萼宽度 | cm |
| petal length | 花瓣长度 | cm |
| petal width | 花瓣宽度 | cm |
标签(3类):
| 标签值 | 类别名 | 学名 |
|---|---|---|
| 0 | 山鸢尾 | setosa |
| 1 | 变色鸢尾 | versicolor |
| 2 | 维吉尼亚鸢尾 | virginica |
数据量:150条(每类50条,均衡分布)
3.2 数据集关键属性
| 属性 | 说明 | 内容 |
|---|---|---|
| data | 具体特征数据 | 150×4的二维数组 |
| target | 具体标签数据 | 150个值(0/1/2) |
| target_names | 标签对应的名称 | 3个类别名 |
| feature_names | 特征名 | 4个特征列名 |
| DESCR | 数据集描述信息 | 详细文字说明 |
| frame | 数据框架 | None(无DataFrame) |
| filename | 文件名 | iris.csv |
| data_module | 数据模型来源 | sklearn.datasets.data |
3.3 特征值参考范围(来自DESCR)
| 特征 | 最小值 | 最大值 |
|---|---|---|
| sepal length | 4.3 | 7.9 |
| sepal width | 2.0 | 4.4 |
| petal length | 1.0 | 6.9 |
| petal width | 0.1 | 2.5 |
⚠️自定义测试数据时,特征值应在此范围内,否则无法正确预测。
3.4 机器学习项目研发流程
- 加载数据
- 数据预处理
- 特征工程(提取、预处理)
- 模型训练
- 模型评估
- 模型预测
4 数学原理与推导
本课无数学推导。
5 代码示例
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris_data = load_iris()
# 查看数据集类型(Bunch,类似字典)
print("数据集类型:", type(iris_data))
# 查看所有键
print("数据集的键:", iris_data.keys())
# 查看具体数据(前5条)
print("具体的数据:\n", iris_data.data[:5])
print("数据条数:", len(iris_data.data)) # 150
# 查看具体标签(前5条)
print("具体的标签:", iris_data.target[:5])
print("标签条数:", len(iris_data.target)) # 150
# 查看标签对应的名称
print("标签对应的名称:", iris_data.target_names)
# 查看特征名
print("特征名:", iris_data.feature_names)
# 查看描述信息
print("描述信息:", iris_data.DESCR)
# 查看文件名
print("文件名:", iris_data.filename)
6 重难点与易错提醒
- ❗重点:鸢尾花数据集共150条数据,3个类别(每类50条),4个特征。
- ❗重点:数据集类型为Bunch,类似字典,通过键访问值。
- ❗重点:实际使用的主要字段:data(特征)、target(标签)、target_names(类别名)、feature_names(特征名)。
- ⚠️易错:加载sklearn自带数据集需要联网(首次加载较慢,后续会缓存)。
- ⚠️易错:自定义测试数据的特征值必须在数据集的参考范围内。
- 💡深入理解:Bunch类型不是字典,但可以当做字典使用。
7 课堂问答精选
Q: 鸢尾花数据集的标签为什么用0、1、2表示?
A: 因为机器学习模型处理数值型标签更方便。0、1、2分别对应三种鸢尾花:0=山鸢尾(setosa),1=变色鸢尾(versicolor),2=维吉尼亚鸢尾(virginica)。通过target_names可以查看标签对应的类别名称。
Q: 鸢尾花数据集的四个特征分别是什么?
A: 花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width),单位都是厘米。
8 本课小结
- 鸢尾花数据集:150条数据,3类(每类50条),4个特征。
- 加载方式:from sklearn.datasets import load_iris
- 数据集类型为Bunch(类似字典),通过键访问值。
- 关键属性:data(特征)、target(标签)、target_names(类别名)、feature_names(特征名)。
- 机器学习流程:加载→预处理→特征工程→训练→评估→预测。
9 延伸思考与实践
- 实践:加载鸢尾花数据集,查看所有属性。
- 思考:为什么数据集要均衡分布(每类50条)?
- 预习:鸢尾花数据集的可视化。