我正在使用sklearn-learn在python中建立一个随机森林,并且已经对所有类别变量应用了“一种热门”编码。问题:如果我对自己的DV应用“一个热点”, 我应该将其所有虚拟列都用作DV,还是应该以不同的方式处理DV?
答案 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}}中的并非所有分类器都能够支持这种格式,(即使它们支持多分类,) ,这将触发多标签分类(一次可以出现多个标签),这是您在多类问题中不想要的。