假设我在数据集中有2个(或多个)可以确定链接的特征(例如:特征B表示特征A的相关程度),有没有办法设计一个决策树,将两者要素在一起(明显的拆分将是如果要素B足够大地被A拆分,并且如果不忽略A的话)? 换句话说:我正在寻找一种“帮助”我的决策树的方法,以便在测试功能B之前不测试功能A。此外,不要单看每个功能的改进,而是要看“ B和后记”的改进。一种” 。任何帮助将不胜感激!
答案 0 :(得分:2)
您可以在splitter
中使用DecisionTreeClassifier
参数。
为此创建自己的实现。
并使用:
my_decision_tree = sklearn.tree.DecisionTreeClassifier(splitter=mySplitter)
答案 1 :(得分:2)
您有几种可能性,
您可以提供第三个功能,该功能是功能A和功能B的线性,政治或逻辑组合,并希望系统自己完成所有操作。为此,sklearn提出了Polinomial Features类和numpy的所有制作模块。
例如,如果特征B编码特征A的相关性。假设B从0变为10,则编码相关性。如果 B> i 和 -10000 ,则可以创建新功能A_0, A_2,A_i,...,A_9 其他地方。
您还可以创建第三个特征,即A + B或A B或A B ^ 2。这些问题是,在拟合决策树之后,很难对结果进行很好的解释。
您可以使用所需的条件对数据进行分区,然后为每个子数据集拟合不同的树。例如,您可以将数据划分为两个组:B> 5和B <= 5
您可以仅将主树拟合到B的要素上,然后,对于决策树的每个叶子,现在可以考虑A和B的要素来拟合新的树。 就代码而言,这可能很麻烦,因为您需要处理多个分类器,并确保每片叶子有足够的样本,以便可以容纳更多的树。
如果您真的想掌握每一步树的决策方法,则必须按照Aditya的建议进行操作,在这种情况下,您将需要创建自己的分离器功能。
sklearn中的默认拆分器已实现here
您需要对其进行修改,以考虑到问题的所有变量