2017-02-03 21 views
-2

私は自分の機能を組み合わせて私の機械学習システムを改善しようとしています。私は自分の機能のすべての組み合わせを生成するためにいくつかのコードを書いています。しかし、それは非常に非効率なようです。これをより速く行う方法はありますか?機能のすべての組み合わせを作成するには?

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

downvoteの理由は? –

+0

私はあなたの質問を投票していませんでしたが、いくつかの洞察のために[StackOverflowの良い質問をする方法](http://stackoverflow.com/help/how-to-ask)をチェックしてください。 – dantiston

+0

私の質問が悪いような洞察を与えてくれますか?私はここに何かが間違っているとは思わない、私は愚かであり、本物の質問をする。この@dantistonで何が間違っているか教えてくださいありがとうございます –

答えて

1

まず、Pythonのitertoolsパッケージをチェックしてください。コードをより効率的かつ読みやすくするのに役立ちます。あなたはそのパッケージであなたが望むコンビナトリアルなもののほとんどを行うことができます。

1つの大きな利点の1つは、ジェネレータを組み合わせのシーケンスに使用することです。そのため、すべてをまとめてリストに保存する必要はありません。

また、本質的に処理が遅いことにご注意ください。 16個のフィーチャのすべての可能な組み合わせが必要な場合は、任意の処理ループで2 ** 16回です。既に64K回の繰り返しで、追加された機能ごとに倍増します。

重大な処理が行われる前にPCA(Principal Component Analysis)と機能低下を検討することはできますか?

+0

PCAとFeatureの選択後、私は20の機能を持っていますので、どのように組み合わせをチェックするために最適化できますか? O(n * 2^n)よりも小さくすることも可能ですか? –

+0

これまでに説明したことはほとんどありませんが、それは2^nに固執しています。 ** O **の複雑さ、または実際の実行時間について心配ですか?それが時間だと、単純な実行から部分的な結果をキャッシュするために何かできることがありますか、あるテストの結果を使用して別のテストを完全に回避しますか? – Prune

関連する問題