在随机森林中使用“一个热”编码因变量

时间:2018-12-03 08:30:36

标签: python machine-learning scikit-learn random-forest one-hot-encoding

我正在使用sklearn-learn在python中建立一个随机森林,并且已经对所有类别变量应用了“一种热门”编码。问题:如果我对自己的DV应用“一个热点”, 我应该将其所有虚拟列都用作DV,还是应该以不同的方式处理DV?

2 个答案:

答案 0 :(得分:0)

您需要对所有值不为数字的列应用一键编码,也可以使用一键编码和其他非数字列的DV处理。例如:假设有一列带有城市名称的列,则需要将其更改为数字形式。这称为数据成型。您也可以不进行单模成型。

例如:在糖尿病的DV列中,输入“是”和“否”。这是没有一键编码的。

diabetes_map = {True : 1, False : 0}
df['diabetes'] = df['diabetes'].map(diabetes_map)

答案 1 :(得分:0)

取决于您遇到的问题的类型。对于二进制或多类问题,您不需要在scikit-learn中使用一个热编码因变量。一键式编码会将输出变量的形状从一维更改为多维。这称为标签指示器矩阵,其中每列表示该标签的存在或不存在。

例如,对以下内容进行一次热编码:

['high', 'medium', 'low', 'high', 'low', 'high', 'medium']

将返回以下内容:

high    medium    low
 1        0        0
 0        1        0
 0        0        1
 1        0        0
 0        0        1
 1        0        0
 0        1        0
{p {1}}中的

并非所有分类器都能够支持这种格式,(即使它们支持多分类,) ,这将触发多标签分类(一次可以出现多个标签),这是您在多类问题中不想要的。