在R中,随机森林非常方便地接受输入(X)的因子(factor)。我假设这使得构建树更容易,如果您能够从具有值(a、b、c)的因子变量构建一个分裂为(a、c)和(b)的节点。在sklearn中,我需要将所有内容编码为(0,1)的虚拟变量(dummy),以便失去a、b、c向量之间的任何关系。
我的理解是否正确?在sklearn中是否有一种方法可以链接输入向量?
如果我将变量编码为(0,1,2),我还假设sklearn会将其解释为0和1彼此靠近,因此它会寻找一个分割[0,1] vs [2]。
在R中,随机森林非常方便地接受输入(X)的因子(factor)。我假设这使得构建树更容易,如果您能够从具有值(a、b、c)的因子变量构建一个分裂为(a、c)和(b)的节点。在sklearn中,我需要将所有内容编码为(0,1)的虚拟变量(dummy),以便失去a、b、c向量之间的任何关系。
我的理解是否正确?在sklearn中是否有一种方法可以链接输入向量?
如果我将变量编码为(0,1,2),我还假设sklearn会将其解释为0和1彼此靠近,因此它会寻找一个分割[0,1] vs [2]。
factor a b c
-------- ---------
a 1 0 0
b 0 1 0
c 0 0 1
f: a | b c
f: b | a c
f: c | a b
有三个虚拟变量,每个变量都有一种可能的分割方式。这又导致了三种可能的分割方式:
a: 1 | 0
b: 1 | 0
c: 1 | 0
1 | 0
中拆分变量a等同于在a | b c
中拆分因子f。因子和one-hot编码之间存在精确对应关系,关系不会丢失,无需明确“链接”输入向量。0 | 1 2
和0 1 | 2
。因此,使用此编码方式无法表示单个节点的拆分b | a c
。max_features
特征(默认值:sqrt(n_features)
)。如果包含了该因子,则评估所有拆分。在one-hot编码中,可能不会评估因子的所有拆分,因为每个虚拟变量都是单独选择的。这可能会对结果树产生影响,但我不知道这可能有多严重。