【发布时间】:2016-10-20 15:10:12
【问题描述】:
问题
我正在尝试基于仅具有名义属性的数据集在 Python 中从头开始构建二元决策树分类器。
我坚持的一个步骤是找到所有可能的方法来计算名义属性的二进制拆分。例如,对于具有可能值 [a, b, c, d] 的属性,我正在寻找一种方法将它们拆分为两个数组,以便我们获得:
left right
---- -----
a bcd
b acd
c abd
d abc
ab cd
ac bd
ad bc
没有重复拆分(例如,我们不需要left 中的“bc”和right 中的“ad”,因为这将产生与left 中的“ad”和@ 中的“bc”相同的二进制拆分987654326@)。每个拆分中的顺序也无关紧要(例如,“ad”与拆分一侧的“da”相同)。
当前尝试
确切的术语让我无法理解,但我认为这是某种形式的组合/排列问题。我知道它不是我所追求的强大力量。我能找到的与我相似的最接近的问题是链接here。
到目前为止,我已经开始了一个迭代过程:
for i in range(1, array.length / 2):
for j in range(1, i):
# stuck here
之所以只循环遍历属性可能值(array)一半长度的下限是因为如果我们在left 中存储最多array.length / 2 值,则右边有1 - (array.length / 2) 值,涵盖所有可能的分裂。
另外,我听说过 itertools 库 .. 所以也许有办法实现我的目标?
【问题讨论】:
标签: python split combinations permutation decision-tree