ForceAtlas
這個筆記範例說明透過力導向演算法 Force Atlas 2 將一個圖形嵌入。
[1]:
from IPython.display import SVG
[2]:
from sknetwork.data import karate_club
from sknetwork.embedding.force_atlas import ForceAtlas
from sknetwork.visualization import visualize_graph
範例
[3]:
graph = karate_club(metadata=True)
adjacency = graph.adjacency
labels = graph.labels
[4]:
forceatlas2 = ForceAtlas()
embedding = forceatlas2.fit_transform(adjacency)
image = visualize_graph(adjacency, embedding, labels=labels)
SVG(image)
[4]:
選項
我們在這裡闡述提供給使用者的各種設定的影響。
使用對數吸引力取代線性吸引力。
[5]:
forceatlas2 = ForceAtlas(lin_log = True)
embedding = forceatlas2.fit_transform(adjacency)
image = visualize_graph(adjacency, embedding, labels=labels)
SVG(image)
[5]:
設定重力和排斥力常數(gravity_factor
和 repulsion_factor
),以設定每個力在配置中的重要性。數值保持在 0.01 到 0.1 之間。
[6]:
forceatlas2 = ForceAtlas(gravity_factor = 0.1)
embedding = forceatlas2.fit_transform(adjacency)
image = visualize_graph(adjacency, embedding, labels=labels)
SVG(image)
[6]:
設定容忍搖擺的數量。較少的搖擺會產生較慢的速度和更高的精度。
[7]:
forceatlas2 = ForceAtlas(tolerance=1.5)
embedding = forceatlas2.fit_transform(adjacency)
image = visualize_graph(adjacency, embedding, labels=labels)
SVG(image)
[7]:
[8]:
forceatlas2 = ForceAtlas(approx_radius=2)
embedding = forceatlas2.fit_transform(adjacency)
image = visualize_graph(adjacency, embedding, labels=labels)
SVG(image)
[8]: