私はグラフについて学んでおり (非常に便利そうです)、グラフを構築する方法についてアドバイスが得られるかどうか疑問に思っていました。
簡単に言えば、毎日注文データを取得し、前日と同じ日もあれば、異なる日もあるとしましょう。たとえば、昨日は鉛筆と消しゴムの注文があり、それらを表す 2 つのノードを作成し、今日は消しゴムとマーカーの注文を受けました。毎日の後、私のプログラムは、誰が何を注文したかを調べます。ボブが昨日鉛筆を注文し、今日消しゴムを注文した場合、有向エッジが作成されます。これに対する私の論理は、誰が毎日何を購入したかを確認でき、ボブの購入行動を追跡できることです (そして、それを使用して、ボブ自身や他のユーザーとのパターンを推測することもできます)。
私の問題は、networkx(python) を使用して、昨日のノード 'pencil' を作成し、次に day2 の別のノード 'pencil' を作成していて、それらを区別できないことです。
私はそれを day2-pencil と命名し、グラフ全体をスキャンして「day2-」を取り除いて鉛筆の注文を追跡することを考えました (実際に行ってきました)。これは私には間違っているようです(プロセッサで高価なことは言うまでもありません)。重要なのは、どうにかして毎日を独自のサブグラフとしてマークできるかどうかだと思います。そのため、特定の日または数日を調査したい場合、グラフ全体をスキャンする必要はありません。
テストデータが大きくなるにつれて、ますます混乱するので、ベストプラクティスは何ですか? 提案を生成するのは素晴らしいことです(networkxはかなりフル機能のように見えるので、おそらくそれを行う方法があります)。
前もって感謝します!
更新:まだうまくいきませんが、これは役立つかもしれません:
import networkx as nx
G=nx.Graph()
G.add_node('pencil', day='1/1/12', colour='blue')
G.add_node('eraser', day='1/1/12', colour='rubberish colour. I know thats not a real colour')
G.add_node('pencil', day='1/2/12', colour='blue')
次のコマンドを入力した結果は次のとおりG.node
です。
{'pencil': {'colour': 'blue', 'day': '1/2/12'}, 'eraser': {'colour': 'rubberish colour. I know thats not a real colour', 'day': '1/1/12'}}
1/1/12 の鉛筆を 1/2/12 の鉛筆で明らかに上書きしていますが、別の鉛筆を作成できるかどうかはわかりません。