我正在尝试通过结合自己的功能来改善我的机器学习系统。我已经编写了一些代码来生成所有功能组合。但是,这似乎效率很低。有没有办法更快地做到这一点?
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(主成分分析)和功能简化?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句