使用 Scikit 和 networkx 在网络中进行标签传播
Label Propagation in networks using Scikit and networkx
我以前从未使用过标签传播,在 Python 中也没有,但现在我需要检查这是否适合我的问题。
我有一个像下面这样的数据集
User Connection Score
xxx.dean.martin vera.miles 10
xxx.dean.martin christopher.sole 5
xxx.dean.martin elis.con NaN
xxx.catherine.rice vera.miles NaN
xxx.vera.miles NaN 0
其中 Score
仅取决于 User
并且可以取值 0、5 或 10。
我想构建一个图,其中 Users
是节点,Connection
是目标。这意味着,例如,xxx.dean.martin
链接到 vera.miles
。 Score
应该是分配给节点的值(例如,xxx.dean.martin
)。
如示例所示,由于缺少某些值 (NaN),我想使用标签传播在缺少的地方分配 Scores
。看最后一个例子,
`xxx.vera.miles NaN 0.0`
当我在网络中可视化时,我应该期待 vera.miles, dean.martin
和 catherine.rice
之间的链接。基于邻居,我想通过节点分配('transfer'/'propagate')分值。
作为数据集的输出示例(应该来自图形可视化):
User Connection Score
xxx.dean.martin vera.miles 10
xxx.dean.martin christopher.sole 5
xxx.dean.martin elis.con 5 # just the average of the nodes which User is linked with
xxx.catherine.rice vera.miles 0
xxx.vera.miles NaN 0
根据您提出的设置,这不是标签传播的标准设置,因为节点和标签的含义以某种方式混合在一起。
要通过计算平均值的 1 步传播获得预期输出,您只需执行以下操作:
df.fillna(df.groupby('User', as_index=False).mean()).fillna(0)
这将用平均值填充 NaN
,用 0
填充剩余的 NaN
。
我以前从未使用过标签传播,在 Python 中也没有,但现在我需要检查这是否适合我的问题。 我有一个像下面这样的数据集
User Connection Score
xxx.dean.martin vera.miles 10
xxx.dean.martin christopher.sole 5
xxx.dean.martin elis.con NaN
xxx.catherine.rice vera.miles NaN
xxx.vera.miles NaN 0
其中 Score
仅取决于 User
并且可以取值 0、5 或 10。
我想构建一个图,其中 Users
是节点,Connection
是目标。这意味着,例如,xxx.dean.martin
链接到 vera.miles
。 Score
应该是分配给节点的值(例如,xxx.dean.martin
)。
如示例所示,由于缺少某些值 (NaN),我想使用标签传播在缺少的地方分配 Scores
。看最后一个例子,
`xxx.vera.miles NaN 0.0`
当我在网络中可视化时,我应该期待 vera.miles, dean.martin
和 catherine.rice
之间的链接。基于邻居,我想通过节点分配('transfer'/'propagate')分值。
作为数据集的输出示例(应该来自图形可视化):
User Connection Score
xxx.dean.martin vera.miles 10
xxx.dean.martin christopher.sole 5
xxx.dean.martin elis.con 5 # just the average of the nodes which User is linked with
xxx.catherine.rice vera.miles 0
xxx.vera.miles NaN 0
根据您提出的设置,这不是标签传播的标准设置,因为节点和标签的含义以某种方式混合在一起。
要通过计算平均值的 1 步传播获得预期输出,您只需执行以下操作:
df.fillna(df.groupby('User', as_index=False).mean()).fillna(0)
这将用平均值填充 NaN
,用 0
填充剩余的 NaN
。