独热编码生成重复特征列引发LightGBM报错,如何解决?
解决LightGBM特征重复问题:为独热编码列添加前缀
问题根源很清晰:比利时的Limburg既是城市名也是省份名,用pd.get_dummies做独热编码时,两个字段生成的列名都是Limburg,导致LightGBM检测到重复特征,抛出致命错误。
当然可以给独热编码列加前缀,pd.get_dummies本身就支持prefix参数,用来给生成的列名添加前缀,避免不同特征组的列名冲突。
修改后的代码如下:
import pandas as pd # 为独热编码列添加前缀,避免特征名重复 one_hot_city_name = pd.get_dummies(data.city_name, prefix='city') one_hot_state_of_the_building = pd.get_dummies(data.state_of_the_building, prefix='state') one_hot_province = pd.get_dummies(data.province, prefix='province') one_hot_region = pd.get_dummies(data.region, prefix='region')
这样处理后,城市Limburg对应的列名会变成city_Limburg,省份Limburg对应的列名会变成province_Limburg,彻底解决特征名重复的问题,后续训练LightGBM就不会再报错了。
内容的提问来源于stack exchange,提问作者Luis Valencia
相关产品推荐
相关产品推荐

