借助numpy索引实现scikit-learn Iris数据集前5个观测标签映射为花卉名称
获取scikit-learn Iris数据集前5条记录对应花卉名称的实现方法
基础加载流程
入门阶段操作Iris数据集的第一步是完成标准加载,固定代码如下:
from sklearn.datasets import load_iris iris = load_iris()
加载完成后可直接调用数据集内置属性:
iris.data:存储所有样本的4维特征值iris.target:存储所有样本对应的整数分类标签iris.target_names:按标签顺序存储的花卉类别名,顺序和已知对应关系完全一致:['setosa', 'versicolor', 'virginica']
两种可落地的实现方案
方案1:基于numpy索引提取(匹配你之前了解的实现思路)
利用numpy数组支持整数索引的特性,不需要循环遍历,代码简洁且效率高:
- 切片取出前5条样本对应的整数标签:
iris.target[:5] - 把取出的标签数组作为下标,直接索引类别名数组
iris.target_names,即可一次性拿到所有对应花卉名称
完整可运行代码:
# 提取前5条样本的分类标签 first5_labels = iris.target[:5] # 通过numpy索引映射为花卉名称 first5_flower_names = iris.target_names[first5_labels] print(first5_flower_names)
运行后输出结果为:['setosa' 'setosa' 'setosa' 'setosa' 'setosa']。由于Iris数据集的存储顺序是前50条全为setosa类别,因此开头5条记录的类别均为setosa。
方案2:手动建立映射关系实现
如果不使用数据集自带的类别名数组,完全按照已知的标签对应规则实现映射,可通过字典匹配的方式完成,适合理解标签-名称的转换逻辑:
# 按已知对应关系建立标签映射字典 label_category_map = { 0: 'setosa', 1: 'versicolor', 2: 'virginica' } # 遍历前5条标签匹配对应名称 first5_flower_names = [label_category_map[label] for label in iris.target[:5]] print(first5_flower_names)
该方案的输出结果和第一种方案完全一致。
常见注意事项
- 取前5条样本的切片写法为
[:5],对应数组下标0到4的记录,不要写错范围 - 优先选择numpy索引的实现写法,避免提前把全量标签转换为字符串再做切片的冗余操作,代码运行效率更高
内容的提问来源于stack exchange,提问作者JakeDrone
相关产品推荐
相关产品推荐

