回归

回归算法。

属性 values_ 为图的每个节点分配一个值。

扩散

class sknetwork.regression.Diffusion(n_iter: int = 3, damping_factor: float = 0.5)[source]

沿着边扩散的回归,给定一些种子节点的温度(热方程)。

温度的行向量 \(T\) 如下演化

\(T \gets (1-\alpha) T + \alpha PT\)

其中 \(\alpha\) 是阻尼因子,\(P\) 是图中随机游走转移矩阵。

所有值都会更新,包括种子节点的值(自由扩散)。参见 Dirichlet,了解具有边界约束的扩散。

参数:
  • n_iter (int) – 扩散的迭代次数(必须为正数)。

  • damping_factor (float) – 阻尼因子。

变量:
  • values (np.ndarray) – 每个节点的值(= 温度)。

  • values_row (np.ndarray) – 行的值,用于二部图。

  • values_col (np.ndarray) – 列的值,用于二部图。

示例

>>> from sknetwork.data import house
>>> diffusion = Diffusion(n_iter=1)
>>> adjacency = house()
>>> values = {0: 1, 2: 0}
>>> values_pred = diffusion.fit_predict(adjacency, values)
>>> np.round(values_pred, 1)
array([0.8, 0.5, 0.2, 0.4, 0.6])

参考文献

Chung, F. (2007). 热核作为图的 PageRank。美国国家科学院院刊。

fit(input_matrix: csr_matrix | ndarray, values: ndarray | list | dict | None = None, values_row: ndarray | list | dict | None = None, values_col: ndarray | list | dict | None = None, init: None | float = None, force_bipartite: bool = False) Diffusion[source]

计算扩散(平衡时的温度)。

参数:
  • input_matrix – 图的邻接矩阵或二部邻接矩阵。

  • values – 节点在初始状态下的温度(字典或向量)。忽略负温度。

  • values_row – 二部图中行和列的温度。忽略负温度。

  • values_col – 二部图中行和列的温度。忽略负温度。

  • init – 节点在初始状态下的温度。如果为 None,则使用种子节点的平均温度(默认)。

  • force_bipartite – 如果为 True,则将输入矩阵视为二部邻接矩阵(默认 = False)。

返回值:

self

返回类型:

扩散

fit_predict(*args, **kwargs) ndarray

将算法拟合到数据并返回值。与 fit 方法具有相同的参数。

返回值:

values – 值。

返回类型:

np.ndarray

get_params()

将参数作为字典获取。

返回值:

params – 算法的参数。

返回类型:

dict

predict(columns: bool = False) ndarray

返回算法预测的值。

参数:

columns (bool) – 如果为 True,则返回列的预测值。

返回值:

values – 值。

返回类型:

np.ndarray

set_params(params: dict) Algorithm

设置算法的参数。

参数:

params (dict) – 算法的参数。

返回值:

self

返回类型:

算法

狄利克雷

class sknetwork.regression.Dirichlet(n_iter: int = 10)[source]

狄利克雷问题回归(具有边界约束的热扩散)。

一些种子节点的温度是固定的。其他节点的温度被计算出来。

参数:

n_iter (int) – 扩散的迭代次数(必须为正数)。

变量:
  • values (np.ndarray) – 每个节点的值(= 温度)。

  • values_row (np.ndarray) – 行的值,用于二部图。

  • values_col (np.ndarray) – 列的值,用于二部图。

示例

>>> from sknetwork.regression import Dirichlet
>>> from sknetwork.data import house
>>> dirichlet = Dirichlet()
>>> adjacency = house()
>>> values = {0: 1, 2: 0}
>>> values_pred = dirichlet.fit_predict(adjacency, values)
>>> np.round(values_pred, 2)
array([1.  , 0.54, 0.  , 0.31, 0.62])

参考文献

Chung, F. (2007). 热核作为图的 PageRank。美国国家科学院院刊。

fit(input_matrix: csr_matrix | ndarray, values: ndarray | list | dict | None = None, values_row: ndarray | list | dict | None = None, values_col: ndarray | list | dict | None = None, init: None | float = None, force_bipartite: bool = False) Dirichlet[source]

计算 Dirichlet 问题(平衡时的温度)的解。

参数:
  • input_matrix – 图的邻接矩阵或二部邻接矩阵。

  • values – 节点的温度(字典或向量)。忽略负温度。

  • values_row – 二部图中行和列的温度。忽略负温度。

  • values_col – 二部图中行和列的温度。忽略负温度。

  • init – 节点在初始状态下的温度。如果为 None,则使用种子节点的平均温度(默认)。

  • force_bipartite – 如果为 True,则将输入矩阵视为二部邻接矩阵(默认 = False)。

返回值:

self

返回类型:

狄利克雷

fit_predict(*args, **kwargs) ndarray

将算法拟合到数据并返回值。与 fit 方法具有相同的参数。

返回值:

values – 值。

返回类型:

np.ndarray

get_params()

将参数作为字典获取。

返回值:

params – 算法的参数。

返回类型:

dict

predict(columns: bool = False) ndarray

返回算法预测的值。

参数:

columns (bool) – 如果为 True,则返回列的预测值。

返回值:

values – 值。

返回类型:

np.ndarray

set_params(params: dict) Algorithm

设置算法的参数。

参数:

params (dict) – 算法的参数。

返回值:

self

返回类型:

算法