LabelEncoder、LabelBinarizer、OneHotEncoder三者的区别

LabelEncoder、LabelBinarizer、OneHotEncoder三者的区别

import numpy as np
from sklearn.preprocessing import LabelEncoder, LabelBinarizer, OneHotEncoder
test_data = np.array(["a", "b", "c", "d", "a"])
print(LabelEncoder().fit_transform(test_data))

输出结果为:
[0 1 2 3 0]
产生结果为连续型特征。

print(LabelBinarizer().fit_transform(test_data))

输出结果为:
[[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
[1 0 0 0]]
默认直接返回一个密集的NumPy数组,通过使用sparse_output=True给LabelBinarizer构造函数,可以得到稀疏矩阵。

print(OneHotEncoder().fit_transform(test_data.reshape(-1, 1)))  # 输出是一个SciPy稀疏矩阵
print(OneHotEncoder().fit_transform(test_data.reshape(-1, 1)).toarray())    # 转换成一个密集的NumPy数组

输出结果为:
(0, 0) 1.0
(1, 1) 1.0
(2, 2) 1.0
(3, 3) 1.0
(4, 0) 1.0
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[1. 0. 0. 0.]]
使用LabelEncoder会以为两个相近的数字比两个较远的数字更为相似一些,为了解决这个问题,使用独热编码,即OneHot编码,得到的输出结果默认是稀疏矩阵,可以使用toarray()方法完成转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值