在scikit-learn中,哪些模型需要将分类变量拆分为虚拟二进制字段?
例如,如果列是political-party
,值为democrat
、republican
和green
,对于许多算法,你需要将其拆分为三列,每行只能有一个1
,其余必须是0
。
这样做可以避免在将[democrat, republican and green]
离散化为[0, 1, 2]
时强加不存在的顺序性,因为democrat
和green
实际上并不比另一对“更远”。
在scikit-learn中,哪些算法需要这种转换为虚拟变量?对于那些不需要的算法,这样做不会有害,对吗?
回答:
在scikit-learn中,哪些算法需要这种转换为虚拟变量?对于那些不需要的算法,这样做不会有害,对吗?
除了基于树的方法外,sklearn中的所有算法都需要对名义分类变量进行独热编码(也称为虚拟变量)。
对于具有非常大基数的分类特征使用虚拟变量可能会损害基于树的方法,尤其是随机树方法,因为它会在特征分割采样器中引入偏差。基于树的方法通常可以很好地处理分类特征的基本整数编码。