独热编码和标签编码

假设有猫、狗、斑马图片数据集,需要通过神经网络进行分类。输入很好理解————图像(处理成黑白图像)中的每个像素作为一个输入神经元,输出好像有点复杂。猫、狗、斑马属于类别变量,很多机器学习算法不能处理类别变量,因此需要对类别变量进行编码。

类型编码

通常编码方式有:标签编码、二值编码以及独热编码。下面进行分别说明:

标签编码

标签编码——标签被编码为连续的数值。这种方法不太适合我们的场景,猫相比于斑马更像狗吗?因为连续数值容易产生这类问题。标签编码更适合这些场景:国家人口数量、建筑物高度、价格范围(低价、中等价格、高价,编码对应1,2,3).
在这里插入图片描述

在神经网络中,使用标签编码,输出层仅有一个输出神经元。

二值编码

二值编码于标签编码类似————转换为二值形式(数值),在神经网络中,使用二值编码,输出有两个神经元。
在这里插入图片描述

独热编码

独热编码使用的列数与要编码的类的数量相同。注意,我们不再对类有任何内置的假设(标签编码连续数值假设)。
在神经网络中,使用独热编码输出层恰好有3个输出神经元。
在这里插入图片描述

示例

下面示例通过两种方法实现独热编码:

import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder
from keras.utils import to_categorical

target_variable = np.array(['cat', 'dog', 'zebra', 'zebra'])

encoder = OneHotEncoder()
sk_one_hot_encoded = encoder.fit_transform(target_variable.reshape(-1, 1)).toarray()

# 使用Keras包实现独热编码
# 首先编码为整数
categorical = pd.Categorical(target_variable)
categorical_codes = categorical.codes
# [0 1 2 2]

# 基于前一步进行独热编码
one_hot_encoded = to_categorical(categorical_codes)
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]
#  [0. 0. 1.]]

二值编码使用下列方式:

data = np.array([1, 2, 3, 0])
data_binarized = preprocessing. Binarizer(threshold=1.4).transform(data)

标签编码示例:

from sklearn import preprocessing

label_encoder = preprocessing.LabelEncoder()
input_classes = ['audi' , 'ford' , 'audi' , 'toyota' , 'ford' ,'bmw' ]
label_encoder.fit(input_classes)

for i, item in enumerate(label_encoder.classes_):
    print(item, "-->", i)
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无序映射是指特征内部取值是无序的情况下的编码方式。标签映射是一种传统的硬编码方式,将类别特征的不同取值按照大小顺序编码成0-(n-1)之间的整数。这种编码方式适用于类别特征内部取值有序的情况。例如,对于学历这个特征,可以使用标签编码将"undergraduate"编码为0,"master"编码为1,"PhD"编码为2,"Postdoc"编码为3。\[1\] 独热编码是一种使用N位状态寄存器来对N个状态进行编码的方式。每个状态都由独立的寄存器位表示,其中只有一位是1,其余位都是0。独热编码主要适用于特征内部取值无序的情况。例如,对于颜色这个特征,可以使用独热编码将"红"编码为\[1, 0, 0\],"蓝"编码为\[0, 1, 0\],"绿"编码为\[0, 0, 1\]。\[2\] 在机器学习中,无序映射可以使用标签映射或独热编码来进行。标签映射适用于特征内部取值有序的情况,而独热编码适用于特征内部取值无序的情况。选择使用哪种编码方式取决于特征的性质和机器学习算法的要求。如果特征内部取值有序,可以使用标签映射;如果特征内部取值无序,可以使用独热编码。\[1\]\[2\] #### 引用[.reference_title] - *1* *2* [机器学习的多种编码方式,独热标签等](https://blog.csdn.net/weixin_43544567/article/details/120462446)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [独热编码(One-Hot Encoding)](https://blog.csdn.net/yanghaoji/article/details/123734304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值