0

私が持っている一連のエッジ (4000K エッジと 4K ノード) でグラフを作成しました。ここで、コーパスからエッジの 10% を取得して、トレーニングとテストのデータ セットを作成したいと考えています。

エッジをランダムに選択したいのですが、このエッジの頂点にランダムな頂点を持つエッジがあるかどうかを確認します。もしそうなら、グラフのそのエッジを削除し、テスト ファイルにそのエッジを書き込みます。そのため、後で類似関数を使用してテスト ファイルのエッジを予測します。

ロジックは、A->B と B->C が与えられたときに、A->C を予測しようとしているということです。

問題は、JGraphT でエッジをランダムに選択し、頂点をランダムに選択する方法を取得できないことです。私の頂点名は、乱数を含む文字列です。

これに対する解決策はありますか?

4

1 に答える 1

1

可能性があります。最初に例を参照してください。

DirectedGraph<String, DefaultEdge> graph = new DefaultDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
Object[] vertexSet = graph.vertexSet().toArray();
Object[] edgeSet = graph.edgeSet().toArray();
String someRndNode = (String) vertexSet [ getSomeRandomNumberBetween(0, vertexSet.length)];
DefaultEdge someRndEdge = (DefaultEdge) edgeSet [ getSomeRandomNumberBetween(0, edgeSet.length)];

グラフのエッジとノードのセットを取得するだけです。配列に基づいて乱数を決定します。そこから必要なものを取り出します。

于 2013-04-26T08:54:23.980 に答える