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'])  
 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM