約 200K サンプルのビッグ データ セットがあります。各サンプルには、さまざまな約 100K の可能な機能からの一連の機能 (約 10) と、それを使用したいくつかの float 型の測定値があります。
たとえば、特定のデータセットに対して
Features trial observations
{1, 40020, 8222} 4 2
{1, 40020, 22, 16000} 14 8
{1, 20, 22, 1000} 1 0
{42, 22, 16000} 2 1
したがって、次のような関数 f が必要です。
f(data, {1, 40020})=
Features trial observations
{1, 40020} 18 10
{1} 1 0
{} 2 1
f(data, {22, 40020})=
Features trial observations
{40020} 4 2
{40020, 22} 14 8
{22} 3 1
そのため、関数 f は、特徴列を特定のセットと交差させ、集計された列を合計することによって、データをグループ化します。
2 番目の引数として、多くの異なる機能セットを持つ同じデータセットに対して "f" を呼び出す必要があると考えてください。そのため、各呼び出しを高速化するために 1 回実行できる前処理はおそらく有益です。
私が見つけた最速の方法は
pandas.DataFrame([sample.data for sample in samples], index = [sample.features for sample in samples]).groupby(lambda x: x & test_features, sort = False).sum()
しかし、パフォーマンスは十分ではありませんでした。これは、groupby の関数を使用しているためだと推測しています。これを最適化する方法はありますか?