如何制作所有功能组合?

How to make all combination of features?

我正在尝试通过结合我的功能来改进我的机器学习系统。我已经编写了一些代码来生成我的功能的所有组合。但是,这似乎效率很低。有没有办法更快地做到这一点?

allcomb=[]
for i in range(pow(2,len(features))):
    com=[]
    for j in (range(len(features))):
        if((i&(1<<j))==1):
            com.append(features[j])
    allcomb.append(com)

首先,查看 Python 的 itertools 包;这将有助于使您的代码更高效和可读。你可以用那个包做你想做的大部分组合事情。

一个很大的优势是,您可以获得一个 生成器 用于组合序列,因此您不必将它们全部存储在一个列表中。

另外,请注意您的流程本来就很慢。如果你想要 16 个特征的所有可能组合,那就是通过任何处理循环 2**16 次。您已经进行了 64K 次迭代,每增加一个功能,迭代次数就会翻倍。

在进行任何繁重的处理之前,您能否考虑进行 PCA(主成分分析)和特征缩减?