【发布时间】:2018-04-08 05:39:32
【问题描述】:
所以我的理解是,您执行一种热编码以将分类特征转换为整数,以使其适合 scikit learn 机器学习分类器。
假设我们有两个选择
一个。将所有特征拆分为一个热编码特征(如果 A 是一个分类特征,其取值 'a'、'b' 和 'c',那么它变成 A_a、A_b 和 A_c,其每一行中的二进制值都是二进制的值“1”表示观察具有特征,二进制值“0”表示它不具有特征!)。然后我会在上面安装一个 DecisionTreeClassifier。
b.不拆分所有特征,而是将每个类别转换为一个整数值而不执行一次热编码(如果 A 是一个类别特征,其取值 'a'、'b' 和 'c',那么 'a'、'b'和 'c' 被重命名为 1、2、3 并且没有创建新列,'A' 仍然是一个具有整数值 1、2、3 的单列,通过使用 pandas.factorize 或您适合的 DecisionTreeClassifier。
我的问题是,当您将 DecisionTreeClassifier 放在一个具有多列的热编码数据集上时,每个新列都会被视为一个单独的特征吗?
此外,如果您将 DecisionTreeClassifier 拟合到数据集上,其中分类特征被简单地转换为整数并保存在单个列中;它会产生与决策树分类器在具有单热编码特征的数据集上拟合的节点分裂相同的节点分裂吗?
就像,当你在这两种情况下可视化树时,
下面给出的解释是否正确?
对于具有单热编码的决策树分类器
如果属性 == A_a,那么是的
如果属性 == A_b,则没有
对于没有单热编码的决策树分类器(“a”由整数值 1 表示,“b”由值 2 表示)
如果属性 == 1 则为是
如果属性 == 2,则否
【问题讨论】:
标签: python pandas scikit-learn decision-tree one-hot-encoding