Python 一种热编码及其与DecisionTreeClassifier的结合

Python 一种热编码及其与DecisionTreeClassifier的结合,python,pandas,scikit-learn,decision-tree,one-hot-encoding,Python,Pandas,Scikit Learn,Decision Tree,One Hot Encoding,所以我的理解是,您执行一个热编码,将分类特征转换为整数,以使它们适合scikit学习机器学习分类器 假设我们有两个选择 a。将所有特征拆分为一个热编码特征(如果A是一个接受值“A”、“b”和“c”的分类特征,那么它将变成A_A、A_b和A_c,每行中都有二进制值,二进制值为“1”,表示观测值具有特征,二进制值为“0”,表示它不具有该特征!)。然后我会在这件事上安排一个决策者 b。不是拆分所有功能,而是将每个类别转换为整数值,而不执行一个热编码(如果A是一个接受值“A”、“b”和“c”的分类特征,

所以我的理解是,您执行一个热编码,将分类特征转换为整数,以使它们适合scikit学习机器学习分类器

假设我们有两个选择

a。将所有特征拆分为一个热编码特征(如果A是一个接受值“A”、“b”和“c”的分类特征,那么它将变成A_A、A_b和A_c,每行中都有二进制值,二进制值为“1”,表示观测值具有特征,二进制值为“0”,表示它不具有该特征!)。然后我会在这件事上安排一个决策者

b。不是拆分所有功能,而是将每个类别转换为整数值,而不执行一个热编码(如果A是一个接受值“A”、“b”和“c”的分类特征,那么“A”、“b”和“c”将被重命名为1、2、3,并且不会创建新列,“A”仍然是一个整数值为1、2、3的单列,使用
pandas.factorize
或适合DecisionTreeClassifier的东西

我的问题是,当您将DecisionTreeClassifier安装在一个热编码的数据集上,并具有多个列时,是否会将每个新列视为单独的功能

此外,如果将DecisionTreeClassifier安装在分类特征仅转换为整数并保存在单个列中的数据集上,它会产生与DecisionTreeClassier安装在具有一个热编码特征的数据集上相同的节点拆分吗

比如,当你在两种情况下都看到树时

下面给出的解释是正确的吗

对于具有一个热编码的DecisionTreeClassifier

如果属性==A_A,则为是

如果属性==A_b,则否

对于没有一个热编码的DecisionTreeClassifier(“a”由整数值1表示,“b”由值2表示)

如果属性==1,则为“是”


如果attribute==2,那么no

您描述的两个选项做两件截然不同的事情

如果选择对变量的值进行二值化(一次热编码),则它们没有顺序。每次拆分时,决策树都会考虑对每个新的二元变量进行二元拆分,并选择信息量最大的一个。因此,是的,每个二元特征现在都被视为独立特征

第二个选项将值按顺序排列。如果转换
a=1
b=2
c=3
,则隐式地说
a
。如果在决策树中使用此变量,算法将考虑拆分1对2,3和1,2对3(但不是3对1,2)

所以变量的含义是非常不同的,我认为你不能期望得到相同的结果