0
点赞
收藏
分享

微信扫一扫

常见三种编码方式

独孤凌雪 2023-05-04 阅读 67

常见三种编码方式


最近复习一些书,记录一下。在特征工程中,数据集经常会出现分类变量,这时候的分类变量可能是字符型,通常不能直接用于训练模型,这时需要对分类变量进行编码,用编码后的结果代入训练模型。下面以房子朝向为例:

import pandas as pd
df = pd.DataFrame({'房子编号':[1, 2, 3, 4, 5],
                  '朝向':['东', '南', '西', '北', '南']})
df

在这里插入图片描述
这里介绍三种常见的编码方式,直接编数字没有放进来。这三种分别是 one-hot 编码、虚拟编码、效果编码。编码方式可以从 one-hot 编码开始,也就是对于一个有 n n n 个种类的分类变量,通过 0 , 1 0,1 0,1 构造出 n n n 个特征,对应特征就用 1 1 1 表示,其余特征用 0 0 0 表示;虚拟编码就是用 n − 1 n-1 n1 列表示 n n n 个特征,相比于 one-hot 编码,这里有一个类别会用全 0 0 0 来表示;效果编码相比于虚拟编码,就是将全 0 0 0 表示的类别用全 − 1 -1 1 表示。

编码方式 n n n 个类别的特征数特点
one-hot n n n每一类都有 n − 1 n-1 n1 0 0 0 1 1 1 1 1 1
虚拟编码 n − 1 n-1 n1其中一类全是 0 0 0
效果编码 n − 1 n-1 n1其中一类全是 − 1 -1 1
数值编码 1 1 1直接给类别标序号,无实际意义

1. one-hot 编码

df_one_hot = pd.get_dummies(df, columns=['朝向'])
df_one_hot

在这里插入图片描述

2. 虚拟编码

df_xn = pd.get_dummies(df, columns=['朝向'], drop_first=True)
df_xn

在这里插入图片描述

3. 效果编码

df_xg = df_xn.copy().astype('int')
df_xg.iloc[0,1:4] = -1.0
df_xg

在这里插入图片描述
参考书籍:
【1】爱丽丝 ⋅ \cdot 郑,阿曼达 ⋅ \cdot 卡萨丽.《精通特征工程》

举报

相关推荐

0 条评论