我正在尝试构建一个线性回归模型,但我的某些特征不是数值型的,例如“汽车颜色”,而其他特征是数值型的,例如“发动机尺寸”。对于非数值型的情况,我不确定如何在添加为输入特征时表示它们。我能想到的唯一方法是用不同的数值来表示每种颜色,例如(红色=1,蓝色=2,绿色=3…),然而这似乎不可接受,因为这意味着绿色比红色“更好”。
有谁能帮帮我…我是在Java中实现这个的,所以我希望能得到用这种语言表达的算法,或者是语言无关的算法。
回答:
一种方法是使用虚拟编码,另一种技术是效果编码。
请参考这篇文章以获取更多细节,我认为作者的解释比我在这里能做的更好。
回归模型中类别变量的编码:Resmi Gupta的虚拟编码和效果编码
我猜这个解决方案会属于你的语言无关类别 😉
要编码汽车颜色(我假设汽车颜色只能取3个值:红色,蓝色,绿色)
你可以按以下方式编码:
颜色 虚拟变量一 虚拟变量二红色 1 0蓝色 0 1绿色 0 0
在上表中,绿色
将成为参考级别。在你的情况下,如果你的颜色取n
个值,你将需要包含n-1
个虚拟变量。
在Java中的实现可以在Weka过滤器NominalToBinary中找到,尽管这会为n
个类别创建n
个变量。