在机器学习中对于有序的类别型变量可以不采用onehot编码,直接使用有序数字代替即可,这个目的可以在pandas中使用map方法实现。
import pandas as pd
创建数据框
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'age': [42, 52, 36, 24, 73],
'city': ['San Francisco', 'Baltimore', 'Miami', 'Douglas', 'Boston']}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'city'])
df
在这里假定是有序的,将城市名映射为数字,当然也可是是其它字符中:
创建用于map的字典
city_to_state = { 'San Francisco' : 0,
'Baltimore' : 1,
'Miami' : 2,
'Douglas' : 3,
'Boston' : 4}
城市名map到洲名,保存到state变量中:
df['state'] = df['city'].map(city_to_state)
df