scikit学习伪变量的创建


问题内容

在scikit-learn中,我需要哪种模型将分类变量分解为虚拟二进制字段?

例如,如果列political- party,和值democratrepublican并且green,对于很多的算法,你必须打入三列这其中每行只能容纳一个1,和所有其余的必须0

这样可以避免强制执行离散化[democrat, republican and green]=>时不存在的序数[0, 1, 2],因为democratgreen实际上并没有比另一对更“远”。

对于scikit-learn中的哪些算法,必须将其转换为虚拟变量?对于那些不是的算法,它不会受到伤害,对吗?


问题答案:

对于scikit-learn中的哪些算法,必须将其转换为虚拟变量?对于那些不是的算法,它不会受到伤害,对吗?

sklearn中的所有算法(基于树的方法除外)都需要对名义分类变量进行一热编码(也称为伪变量)。

对基数非常大的分类特征使用伪变量可能会损害基于树的方法,尤其是通过在特征拆分采样器中引入偏差的随机树方法。基于树的方法倾向于使用分类特征的基本整数编码合理地很好地工作。