2017-03-14 9 views
0

私は3列と80.000.000行を持つpandasを使ってPythonでDataFrameを持っています。PythonでAprioriアルゴリズムを実行する2.7

{event_id、device_id、category}の列は次のとおりです。 here is the first 5 rows of my df

各デバイスには多くのイベントがあり、各イベントには複数のカテゴリがあります。

Aprioriアルゴリズムを実行して、一緒に見えるカテゴリを見つけたいと思っています。

私の考えは、リスト[[]]のリストを作成して、各デバイスの同じイベントにあるカテゴリを保存することです。 [( 'a')、( 'a'、 'b')( 'd')、( 's'、 'a'、b ')]リストをアルゴリズムへのトランザクションとして与える。 リストのリストを作成するのに助けが必要です。

あなたが良いアイデアを持っていれば、私がPythonで新しくなったから教えてください。これが私が見つけた唯一の方法でした。

+0

あなたの方法を試してみてから、コードを表示してください。 – Nocturno

+0

データフレームからリストのリストを作成するためのアドバイスはありますか? –

答えて

0

ここでは少し遅れて返答しますが、私にはそれがあなたのデータにとって正しい選択ではないかもしれないと思われます。従来のaprioriは、すべて同じタイプのトランザクションのリストについて、バイナリデータ(古典的なマーケットバスケットの例では「カート内」または「カートに入れない」)を調べます。あなたが持っていると思われるのは、よりスケーラブルなアルゴリズムに適した多レベル/階層的な関連付け問題です。

つまり、書式設定の質問に答えるためには、トランザクションが行を反映し、列が各トランザクションに表示される可能性のある項目を表すようにデータをピボットすることがまず必要です。これはDataFrame.pivotで達成することができ、(ドキュメントからコードを、便宜上ここに掲載)このようなものになります:あなたが使用してデータフレームからのリストのリストを作成することができ、そこから

df = pd.DataFrame({'foo': ['one','one','one','two','two','two'], 
        'bar': ['A', 'B', 'C', 'A', 'B', 'C'], 
        'baz': [1, 2, 3, 4, 5, 6]}) 
>>> df 
    foo bar baz 
0 one A 1 
1 one B 2 
2 one C 3 
3 two A 4 
4 two B 5 
5 two C 6 

df.pivot(index='foo', columns='bar', values='baz') 
    A B C 
one 1 2 3 
two 4 5 6 

を:

df.values.tolist() 

この質問は以前回答しましたhereです。

aprioriを使用すると、すでにパッケージが実装されているため、apyoriという名前の時間を節約できます。

関連する問題