我正在尝试使用 igraph
和 python
实现用于单变量网络数据的分类工具包。
然而,我的问题实际上更多地涉及关系分类领域的算法问题,而不是编程问题。
我正在参照《Classification in Networked Data》一文。
我很难理解这篇论文中提到的“仅网络贝叶斯分类器”(NBC),这是该论文中解释的关系分类器之一。
我之前使用词袋特征表示为文本数据实现了朴素贝叶斯
分类器。而且,在我脑海中,对于文本数据的朴素贝叶斯
的想法很清晰。
我认为这种方法(NBC)是将相同的想法简单地翻译成关系分类领域的。但是,我对方程式中使用的符号感到困惑,因此无法弄清楚发生了什么。我还对文章中使用的符号有一个问题 here。
NBC在该论文的第14页有解释。
摘要:
我需要解释《论文》第14页中“仅网络贝叶斯分类器”(NBC)的伪代码。
伪代码符号说明:
- 称列表中的顶点为
vs
。长度为len(vs)
,第i个顶点为vs[i]
。 - 假设我们有一个单变量和二进制场景,即
vs[i].class
是0
或1
,并且没有其他给定节点特征。 - 假设我们先运行了一个本地分类器,以便每个节点都有一个初始标签,这些标签由本地分类器计算得出。我只对关系分类器部分感兴趣。
- 将要预测的顶点称为
v
,v.neighbors()
是与v
相邻的顶点列表。 - 假设所有边缘权重都为
1
。
现在,我需要以下伪代码:
def NBC(vs, v):
# v.class is 0 or 1
# v.neighbors is list of neighbor vertices
# vs is the list of all vertices
# This function returns 0 or 1
编辑:
为了让你的工作更轻松,我做了这个example。我需要最后两个方程式的答案。