2016-11-29 54 views
0

我使用GradientBoosting分类器来预测用户的性别。数据有很多预测因素,其中之一就是国家。对于每个国家我都有二元列。对于所有国家/地区栏,始终只有一列设置为1。但从计算的角度来看,这样的desicion非常慢。有没有什么方法只用一列代表国家列?我的意思是正确的。GradientBoostingClassifier和许多列

回答

1

您可以用实际的国家名称替换二进制变量,然后将所有这些列合并到一列中。在此列上使用LabelEncoder可创建适当的整数变量,并且应该全部设置。

+0

但是这样的数据是不正确的。因为ID为1的国家不少于ID为2的国家.GBM不知道它,并试图找到这样的规则。可能会发现它会过度配合 – user3318023

+0

我不认为它按照命令对待它们,我犯了一个错误。在“LabelEncoder”的文档中,他们甚至以城市为例,所以我认为这也适用于各个国家。如果您不相信“LabelEncoder”符合您的需求,您也可以从同一个库中签出'OneHotEncoder'。 –

+0

我从来没有使用过'OneHotEncoder',但我相信你会在其中输入一些混合列。例如,而不是一列是'国家',另一列是'头发的颜色',这两个将被连接起来,你会有'[来自俄罗斯,有红头发']的东西。这就是说我仍然相信'LabelEncoder'会适合你的需求。 –