私はグラフについて学んでいます(彼らは非常に役に立つと思われます)、私はグラフを構成する可能性のある方法について助言を得ることができるのだろうかと思っていました。同じ名前のノードを区別するための正しいグラフデータ構造は何ですか?
簡単に言えば、私は毎日注文日のデータを取得し、数日前の日と同じ日に、また他の日には異なる日を指定します。たとえば、昨日私は鉛筆と消しゴムを注文しました。私はそれらを表すために2つのノードを作成し、今日は消しゴムとマーカーなどの注文を受け取ります。毎日の後、私のプログラムは誰が何を注文したかを見ています。そして、ボブが昨日鉛筆を注文してから今日消しゴムを注文すると、それは有向エッジを作り出します。私の論理は、誰が毎日何を買ったかを見ることができ、ボブの購入行動を追跡することができます(そして、それを使って自分や他のユーザーとパターンを推測することもできます)。
私はnetworkx(python)を使用していて、昨日のノード「鉛筆」を作成し、次にday2の別のノード「鉛筆」を作成しています。
私は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'}}
ITSは、明らかに1月1日から鉛筆を上書き/ 12分の1と12分の12、分かりにくいかどうかわかりません。
私は属性を検索できるかどうか確認するために(運がない)試しました。私はおそらく、day1、day2、等の属性を追加することを考えていたし、その属性を持つすべてのノードを検索します。存在するかもしれませんが、見つけられませんでした。 – Lostsoul