Python系列 | 利用sklearn进行one-hot编码(LabelBinarizer与MultiLabelBinarizer)

本文介绍了如何使用sklearn库中的LabelBinarizer和MultiLabelBinarizer对定类变量进行one-hot编码和多标签编码。通过示例展示了单个和多个nominal型特征的转换过程,简化了数据预处理步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知,当我们遇到nominal型特征时(统计学上称为定类变量),也就是用文字或字符串进行表示而无大小顺序关系的变量,有时候需要将此类定类变量转换为定量变量(数值),从而进行下一步的数据分析或挖掘。

在sklearn中,有两个非常方便的class——LabelBinarizerMultiLabelBinarizer

针对单个nominal型特征,可以利用LabelBinarizer可以快速进行one-hot编码,实现定类变量定量化。若存在多个nominal型特征,则使用MultiLabelBinarizer

话不多说,看代码:

import numpy as np
# 先创建一个特征
nominal = np.array([["A"],
                   ["B"],
                   ["C"],
                   ["D"]])
# 导入LabelBinarizer
from sklearn.preprocessing import LabelBinarizer
one_hot = LabelBinarizer()  # 创建one-hot编码器
one_hot.fit_transform(nominal) # 对特征进行one-hot编码
# 转换前nominal
array([['A'],
       ['B'],
       ['C'],
       ['D']], dtype='<U1')
# 转换后结果
array([[1, 0, 0, 0],
       [0, 1, 0, 0],
       [0, 0, 1, 0],
       [0, 0, 0, 1]])

三行代码解决one-hot编码,很快有没有!

对于多个nominal型特征的情况,操作也是类似的:

import numpy as np
# 创建多nominal
multi_nominal = np.array([["A","Black"],
                         ["B","White"],
                         ["C","Green"],
                         ["D","Red"]])
# 导入MultiLabelBinarizer
from sklearn.preprocessing import MultiLabelBinarizer
multi_one_hot = MultiLabelBinarizer()
multi_one_hot.fit_transform(multi_nominal)
# 转换前结果
array([['A', 'Black'],
       ['B', 'White'],
       ['C', 'Green'],
       ['D', 'Red']], dtype='<U5')
# 转换后结果
array([[1, 0, 1, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0, 0, 1],
       [0, 0, 0, 1, 0, 1, 0, 0],
       [0, 0, 0, 0, 1, 0, 1, 0]])
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值