我正在尝试建立一个线性回归模型,但我的一些特征不是数字的,例如“汽车颜色”,而其他的是例如“发动机尺寸”。在非数字情况下,我不确定在添加为输入特征时如何表示。我能想到的唯一方法是用不同的值表示每种颜色,例如(红色= 1,蓝色= 2,绿色= 3 ...)但这似乎不可接受,因为这意味着绿色是“比红色更好。
任何人都可以帮忙......我正在用Java实现这个,所以我很欣赏用这种语言表达的算法或独立于语言的算法。
我正在尝试建立一个线性回归模型,但我的一些特征不是数字的,例如“汽车颜色”,而其他的是例如“发动机尺寸”。在非数字情况下,我不确定在添加为输入特征时如何表示。我能想到的唯一方法是用不同的值表示每种颜色,例如(红色= 1,蓝色= 2,绿色= 3 ...)但这似乎不可接受,因为这意味着绿色是“比红色更好。
任何人都可以帮忙......我正在用Java实现这个,所以我很欣赏用这种语言表达的算法或独立于语言的算法。
一种方法是使用虚拟编码,另一种技术是效果编码。
请参阅这篇文章了解更多详细信息,我认为作者的解释比我在这里可以做的更好。
回归模型中的分类变量编码:Resmi Gupta 的虚拟和效果编码
我想这个解决方案将属于您的语言独立类别;)
对汽车颜色进行编码(我假设汽车颜色只能取 3 个值:红色、蓝色、绿色)
您可以按如下方式对其进行编码:
Color Dummy_Var_One Dummy_Var_Two
Red 1 0
Blue 0 1
Green 0 0
在上表Green
中将成为参考水平。在您的情况下,如果您的颜色n
取值,您将需要包含n-1
虚拟变量。
可以在Weka过滤器NominalToBinary中找到 Java 中的实现,尽管这将为类别创建n
变量。n