我试图通过结合我的功能来改进我的机器学习系统。我编写了一些代码来生成我的所有功能组合。但是,效率似乎非常低。有没有办法更快地做到这一点?
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)
答案 0 :(得分:1)
首先,查看Python的itertools包;这将有助于提高代码的效率和可读性。您可以使用该软件包完成大多数组合项目。
一个很大的好处是,您可以获得组合序列的生成器,因此您不必将它们全部存储在列表中。
另外,请注意您的过程本身就很慢。如果您想要16种功能的所有可能组合,那么通过任何处理循环都需要2 ** 16次。您已经进行了64K次迭代,并且每次添加的功能都会加倍。
在进行任何繁重的处理之前,您能考虑进行PCA(主成分分析)和功能减少吗?