进行 One-Hot 编码或不进行 One-Hot 编码
To One-Hot encode or not to One-Hot encode
我的数据集有星期几(周一 = 1,周二 = 2,周三 = 3 ...)
我的数据是这样的
WeekDay Col1 Col2 Target
1 2.2 8 126
6 3.5 4 354
1 8.0 2 322
3 7.2 4 465
7 3.2 5 404
6 3.8 3 134
1 3.6 5 455
1 5.5 8 345
6 7.0 6 442
我是否可以对 WeekDay 进行一次性编码,使其看起来像这样?
WeekDay Col1 Col2 Target Mo Tu We Th Fr Sa Su
1 2.2 8 126 1 0 0 0 0 0 0
6 3.5 4 354 0 0 0 0 0 1 0
1 8.0 2 322 1 0 0 0 0 0 0
3 7.2 4 465 0 0 1 0 0 0 0
7 3.2 5 404 0 0 0 0 0 0 1
6 3.8 3 134 0 0 0 0 0 1 0
1 3.6 5 455 1 0 0 0 0 0 0
1 5.5 8 345 1 0 0 0 0 0 0
6 7.0 6 442 0 0 0 0 0 1 0
我要使用随机森林
一般来说,在使用随机森林之前最好先使用 One-Hot-Encoding。如果这只是您数据集中的分类变量,则选择 One-hot-Encoding。如果您使用 R 的随机森林,那么据我所知,R 的库会自行处理它。 scikit-learn 情况并非如此,您必须 one-hot 自己编码。有一个权衡。 One-Hot 编码引入了稀疏性,如果分类变量的基数很大,或者换句话说,分类变量中有很多唯一值,这对于 tree-based 模型来说是不可取的。但是,Python 的 catboost 处理分类变量。
您不应该使用一种热编码,因为您使用的是随机森林模型。 RF 模型也能够从标签编码中找到模式,并且通常 RF 模型在使用一种热编码时表现更差,因为它们可能决定在创建树时浪费几天时间。此外,一种热编码会在您的数据中引入维数灾难,这从来都不是一件好事。
在线性回归或逻辑回归等方法的情况下,一个热编码更好,其中 1 即星期一可能比 6 即星期六更重要,因为这些模型在后端有乘法模型。
我的数据集有星期几(周一 = 1,周二 = 2,周三 = 3 ...)
我的数据是这样的
WeekDay Col1 Col2 Target
1 2.2 8 126
6 3.5 4 354
1 8.0 2 322
3 7.2 4 465
7 3.2 5 404
6 3.8 3 134
1 3.6 5 455
1 5.5 8 345
6 7.0 6 442
我是否可以对 WeekDay 进行一次性编码,使其看起来像这样?
WeekDay Col1 Col2 Target Mo Tu We Th Fr Sa Su
1 2.2 8 126 1 0 0 0 0 0 0
6 3.5 4 354 0 0 0 0 0 1 0
1 8.0 2 322 1 0 0 0 0 0 0
3 7.2 4 465 0 0 1 0 0 0 0
7 3.2 5 404 0 0 0 0 0 0 1
6 3.8 3 134 0 0 0 0 0 1 0
1 3.6 5 455 1 0 0 0 0 0 0
1 5.5 8 345 1 0 0 0 0 0 0
6 7.0 6 442 0 0 0 0 0 1 0
我要使用随机森林
一般来说,在使用随机森林之前最好先使用 One-Hot-Encoding。如果这只是您数据集中的分类变量,则选择 One-hot-Encoding。如果您使用 R 的随机森林,那么据我所知,R 的库会自行处理它。 scikit-learn 情况并非如此,您必须 one-hot 自己编码。有一个权衡。 One-Hot 编码引入了稀疏性,如果分类变量的基数很大,或者换句话说,分类变量中有很多唯一值,这对于 tree-based 模型来说是不可取的。但是,Python 的 catboost 处理分类变量。
您不应该使用一种热编码,因为您使用的是随机森林模型。 RF 模型也能够从标签编码中找到模式,并且通常 RF 模型在使用一种热编码时表现更差,因为它们可能决定在创建树时浪费几天时间。此外,一种热编码会在您的数据中引入维数灾难,这从来都不是一件好事。
在线性回归或逻辑回归等方法的情况下,一个热编码更好,其中 1 即星期一可能比 6 即星期六更重要,因为这些模型在后端有乘法模型。