Regression
Diffusion
介绍通过热扩散(heat diffusion)的回归任务。
from IPython.display import SVG
import numpy as np
from sknetwork.data import karate_club, painters, movie_actor
from sknetwork.regression import Diffusion
from sknetwork.visualization import svg_graph, svg_digraph, svg_bigraph
图
graph = karate_club(metadata=True)
adjacency = graph.adjacency
position = graph.position
labels_true = graph.labels
labels_true
# heat diffusion
diffusion = Diffusion()
seeds = {0: 0, 33: 1}
values = diffusion.fit_transform(adjacency, seeds)
values
image = svg_graph(adjacency, position, scores=values, seeds=seeds)
SVG(image)
有向图
graph = painters(metadata=True)
adjacency = graph.adjacency
position = graph.position
names = graph.names
picasso = 0
manet = 3
diffusion = Diffusion()
seeds = {picasso: 1, manet: 1}
values = diffusion.fit_transform(adjacency, seeds, init=0)
values
image = svg_digraph(adjacency, position, names, scores=values, seeds=seeds)
SVG(image)
二部图
graph = movie_actor(metadata=True)
biadjacency = graph.biadjacency
names_row = graph.names_row
names_col = graph.names_col
drive = 3
aviator = 9
diffusion = Diffusion()
seeds_row = {drive: 0, aviator: 1}
diffusion.fit(biadjacency, seeds_row=seeds_row)
values_row = diffusion.values_row_
values_col = diffusion.values_col_
image = svg_bigraph(biadjacency, names_row, names_col, scores_row=values_row, scores_col=values_col,
seeds_row=seeds_row)
SVG(image)
# 由于种子在电影中,需要偶数迭代才能获得电影的非平凡排名,这是由于图的两分结构所致。
# changing the number of iterations
diffusion = Diffusion(n_iter=4)
seeds_row = {drive: 0, aviator: 1}
diffusion.fit(biadjacency, seeds_row=seeds_row)
values_row = diffusion.values_row_
values_col = diffusion.values_col_
image = svg_bigraph(biadjacency, names_row, names_col, scores_row=values_row, scores_col=values_col,
seeds_row=seeds_row)
SVG(image)
Dirichlet
介绍基于受限的heat diffusion的 Dirichlet 问题的回归任务。
from IPython.display import SVG
import numpy as np
from sknetwork.data import karate_club, painters, movie_actor
from sknetwork.regression import Dirichlet
from sknetwork.visualization import svg_graph, svg_digraph, svg_bigraph
图
graph = karate_club(metadata=True)
adjacency = graph.adjacency
position = graph.position
labels_true = graph.labels
labels_true
# heat diffusion
dirichlet = Dirichlet()
seeds = {0: 0, 33: 1}
values = dirichlet.fit_transform(adjacency, seeds)
image = svg_graph(adjacency, position, scores=values, seeds=seeds)
SVG(image)
有向图
graph = painters(metadata=True)
adjacency = graph.adjacency
position = graph.position
names = graph.names
picasso = 0
monet = 1
dirichlet = Dirichlet()
seeds = {picasso: 0, monet: 1}
values = dirichlet.fit_transform(adjacency, seeds)
image = svg_digraph(adjacency, position, names, scores=values, seeds=seeds)
SVG(image)
二部图
graph = movie_actor(metadata=True)
biadjacency = graph.biadjacency
names_row = graph.names_row
names_col = graph.names_col
dirichlet = Dirichlet()
drive = 3
aviator = 9
seeds_row = {drive: 0, aviator: 1}
dirichlet.fit(biadjacency, seeds_row)
values_row = dirichlet.values_row_
values_col = dirichlet.values_col_
image = svg_bigraph(biadjacency, names_row, names_col, scores_row=values_row, scores_col=values_col,
seeds_row=seeds_row)
SVG(image)