如何用Pandas将Iris数据集目标Series的单值替换为数组实现独热编码?
解决Iris目标标签的独热编码问题
推荐:标准独热编码方案(适合建模)
直接用Pandas内置的pd.get_dummies生成独热编码的DataFrame,这是后续机器学习建模最常用的格式,避免把数组存在Series里的麻烦:
import pandas as pd from sklearn.datasets import load_iris # 加载数据并拆分目标标签 iris = load_iris() y = pd.Series(iris.target, name='target') # 生成独热编码DataFrame,每个类别对应一列 y_onehot = pd.get_dummies(y, prefix='target') # 如果需要转成numpy数组供模型使用 y_onehot_array = y_onehot.to_numpy()
得到的y_onehot是一个3列的DataFrame,每行对应一个样本的独热编码(比如标签0对应[1,0,0],标签1对应[0,1,0]等)。
若需将标签替换为数组存储
如果你确实需要把Series中的每个标量标签换成对应的数组,可以用map方法(replace不适合处理数组替换,会导致元素对齐错误):
# 定义标签到数组的映射字典 label_to_array = { 0: [1, 0, 0], 1: [0, 1, 0], 2: [0, 0, 1] } # 逐个替换Series中的元素 y_with_arrays = y.map(label_to_array)
此时y_with_arrays的每个元素就是对应的独热编码数组,注意这个Series的类型是object,因为存储的是列表对象,这种格式不适合直接输入模型,仅适合特定的自定义场景。
内容的提问来源于stack exchange,提问作者Micah Bassett
相关产品推荐
相关产品推荐

