常见三种编码方式
最近复习一些书,记录一下。在特征工程中,数据集经常会出现分类变量,这时候的分类变量可能是字符型,通常不能直接用于训练模型,这时需要对分类变量进行编码,用编码后的结果代入训练模型。下面以房子朝向为例:
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 
       
      
    n−1 列表示  
     
      
       
       
         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 n−1 个 0 0 0 和 1 1 1 个 1 1 1 | 
| 虚拟编码 | n − 1 n-1 n−1 | 其中一类全是 0 0 0 | 
| 效果编码 | n − 1 n-1 n−1 | 其中一类全是 − 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 
       
      
    ⋅卡萨丽.《精通特征工程》










