对于回归问题,我的数据集中有一些分类变量。
1)其中一个变量可以取3个值(女孩、男孩、女孩和男孩)。将其转换为一个热编码或二进制编码将将所有三个值视为不同的类。我怎样才能有效地保留“女孩和男孩”所包含的信息?在这种情况下,把女孩和男孩分成两个单独的栏目是唯一的办法吗?
2)年龄范围:(18-35岁,35-50岁等)我将其分解为age_min和age_max的两列。有什么更好的方法来使用这样的功能在范围内的值吗?
3)百分比范围:它只能取5个值(0,1,1-5,5-10,10)。我应该如何使用这个变量来训练我的模型?在这里,由于"1“和"10”的固定值,我不能将其分解为2列(如年龄)。如何处理具有固定值和范围值的变量?
4)相似性:它也可以取5个值(0,1,1-5,5-10,10),但它也有一个“自动”选项。这意味着,如果它是“自动”,它可以采取任何随机值,我们不知道。我该怎么把它结合起来?我是否应该为“它是否是自动的”创建一个单独的列?然后,在原来的相似栏中,我应该用“自动”来表示观察值。我不能把" 0“,因为它已经是一个值,我相信”自动“不会是0。把它说成“没有”会有什么不同吗?如何对待未知的价值?
发布于 2019-06-20 06:46:58
在开始之前,请允许我注意,没有一种正确和错误的方法来进行特性工程。如果你想彻底,你需要试一试,看看它们是否有效。
现在让我给你我的意见(也就是我如何对待事物),但它们并不一定能奏效:
1)其中一个变量可以取3个值(女孩、男孩、女孩和男孩)。将其转换为一个热编码或二进制编码将将所有三个值视为不同的类。我怎样才能有效地保留“女孩和男孩”所包含的信息?在这种情况下,把女孩和男孩分成两个单独的栏目是唯一的办法吗?
我认为一种热编码在这里效果最好。根据Girls&Boys存储的信息,您可以选择如何对其进行编码。如果Girls&Boys == 1,如果Girls和Boys都是1,那么我认为您可以安全地省略它。
2)年龄范围:(18-35岁,35-50岁等)我将其分解为age_min和age_max的两列。有什么更好的方法来使用这样的功能在范围内的值吗?
你所做的并不坏。另一种选择是将其视为有序变量,并简单地将每个范围映射为一个数字(同时保持顺序)。例如18-35 --> 1、35-50 --> 2等。
3)百分比范围:它只能取5个值(0,1,1-5,5-10,10)。我应该如何使用这个变量来训练我的模型?在这里,由于"1“和"10”的固定值,我不能将其分解为2列(如年龄)。如何处理具有固定值和范围值的变量?
和以前一样。我会把这当成一个有序变量。您甚至可以离开0和1。剩下的会是这样的:1-5 --> 2,5-10 --> 3,10 --> 4。如果这5个类别中的一些有很少的值,您可以将其与相邻的一个合并!
4)相似性:它也可以取5个值(0,1,1-5,5-10,10),但它也有一个“自动”选项。这意味着,如果它是“自动”,它可以采取任何随机值,我们不知道。我该怎么把它结合起来?我是否应该为“它是否是自动的”创建一个单独的列?然后,在原来的相似栏中,我应该用“自动”来表示观察值。我不能把" 0“,因为它已经是一个值,我相信”自动“不会是0。把它说成“没有”会有什么不同吗?如何对待未知的价值?
这里更棘手。我要做的一件事是,您提到的是:如果用户选择"auto“,那么auto列可以是1,也可以是0。但是,现在对范围进行编码是很棘手的,因为您将如何编码那些选择了“自动”的区域?一种方法是创建一个单独的类别(例如,auto --> 5),但是对于序数变量来说,这是不正确的。另一种选择是对此进行一次热编码。您的选择取决于两个原因: a)考虑到“自动”选项,保留范围信息的重要性有多大?你能把类别分类吗?你能无视他们的命令吗?( b)有多少样本是“自动”的?如果他们很少,这甚至可能没有什么区别。如果它们太多,那么编码范围就可能没有任何意义。
https://datascience.stackexchange.com/questions/54112
复制相似问题