python离散特征编码

Posted change_world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python离散特征编码相关的知识,希望对你有一定的参考价值。

离散特征编码分两种,特征具有大小意义,特征不具有大小意义。

1、特征不具备大小意义的直接独热编码

2、特征有大小意义的采用映射编码

[python] view plain copy
 
  1. import pandas as pd   
  2. df = pd.DataFrame([    
  3.             [‘green‘, ‘M‘, 10.1, ‘label1‘],     
  4.             [‘red‘, ‘L‘, 13.5, ‘label2‘],     
  5.             [‘blue‘, ‘XL‘, 15.3, ‘label2‘]])    
  6. # color、label不具备大小含义,size具有大小意义  
  7. df.columns = [‘color‘, ‘size‘, ‘length‘, ‘label‘]    
  8. df  

技术分享图片

 

[python] view plain copy
 
  1. size_mapping = {    
  2.            ‘XL‘: 3,    
  3.            ‘L‘: 2,    
  4.            ‘M‘: 1}    
  5. df[‘size‘] = df[‘size‘].map(size_mapping)    
  6.     
  7. label_mapping = {lab:idx for idx,lab in enumerate(set(df[‘label‘]))}    
  8. df[‘label‘] = df[‘label‘].map(label_mapping)    
  9. df  

技术分享图片

直接使用函数进行独热编码

并不会区分是否具有大小含义

 

[python] view plain copy
 
  1. import pandas as pd   
  2. df = pd.DataFrame([    
  3.             [‘green‘, ‘M‘, 10.1, ‘label1‘],     
  4.             [‘red‘, ‘L‘, 13.5, ‘label2‘],     
  5.             [‘blue‘, ‘XL‘, 15.3, ‘label2‘]])    
  6. # color、label不具备大小含义,size具有大小意义  
  7. df.columns = [‘color‘, ‘size‘, ‘length‘, ‘label‘]    
  8. pd.get_dummies(df)  

技术分享图片

get_dummies用法:

 

[python] view plain copy
 
  1. import pandas as pd  
  2. s = pd.Series(list(‘abca‘))  
  3. pd.get_dummies(s)  

 

 

 

[python] view plain copy
 
  1. df = pd.DataFrame({‘A‘: [‘a‘, ‘b‘, ‘a‘], ‘B‘: [‘b‘, ‘a‘, ‘c‘],  
  2.                     ‘C‘: [1, 2, 3]})  
[python] view plain copy
 
  1. pd.get_dummies(df, prefix=[‘col1‘, ‘col2‘])  

 

以上是关于python离散特征编码的主要内容,如果未能解决你的问题,请参考以下文章

为啥要用one-hot编码

连续型特征的归一化和离散特征的one-hot编码

机器学习离散型特征为什么要用One-Hot编码?

[转]独热编码存在的问题

机器学习特征如何构造?(面试回答)

AutoML学习---机器学习01