二部图二元节点分类的快速分类器
SW-transformation的Python项目详细描述
软件转换
sw变换是二部图(Stankova et al., 2015)中二元节点分类的一种快速分类器。二分图(或双图)由具有两种类型的节点定义,使得边缘仅存在于不同类型的节点之间(参见图1)。
图1:双图,上节点投影和下节点投影(左),双图的邻接矩阵表示(右)(Stankova等人,2015,第8页)。
sw转换将加权投票关系邻居(wvrn)分类器与一个聚合函数相结合,该聚合函数求和顶级节点的权重。对于每一个测试实例,转换优化地只考虑相邻顶级节点的权重乘以该列中具有正标签(节点的正邻居)的训练实例的数量。sw转换产生非常快的运行时间,并允许将该方法轻松扩展到数百万节点的大数据集(Stankova等人,2015)。
安装
要求:numpy
pip install numpy
要在本地计算机上构建和安装,请下载并解压缩存储库并从中运行:
python setup.py install
或者您可以从pypi存储库自动下载并安装:
pip install SW-transformation
用法
sw变换可用于计算二部图中节点属于正类的概率。包括三个顶点权函数:简单权函数、反度函数和双曲正切函数。用户还可以使用自己的权重函数直接插入最上面的节点权重。
sw转换(权重函数='tanh',权重=无)
参数
- weight_函数:“tanh”、“inverse”、“simple”或“own”(默认值为tanh)。 对于“own”,应以权重的形式提供顶部节点的权重
- 权重:数组状,形状(1,n_顶部节点)。包含顶部的向量 节点权重,其中n_top_nodes是顶部节点的数量。什么时候? weight_函数设置为“own”,顶部节点权重应为 在这里提供。
示例
from sklearn.model_selection import GridSearchCV
import numpy as np
import SW
X = load_adjacency_matrix_here #sparse matrix
y = load_node_labels_here
custom = lambda X: np.ones((X.shape[1],)) # define custom weight function
sw = SW.SW_transformation()
parameters = {'weight_function':('tanh','inverse','simple',custom)}
clf = GridSearchCV(sw, parameters, cv=5, scoring = 'roc_auc', verbose=3)
clf.fit(X,y)
方法
- 拟合(x,y)-根据给定的训练数据拟合模型。
- 预测概率(x)-概率估计。
x:稀疏矩阵,shape(n_bottom_nodes,n_top_nodes):邻接矩阵(见图1,右)
y:类数组,shape(n_bottom_nodes,1):二进制类标签(0表示负数,1表示正数)
作者和贡献者
斯蒂恩·普拉特stiene.praet@uantwerp.be
许可证
这个项目是在麻省理工学院的许可下授权的-请参见LICENSE.md文件了解详细信息
致谢
根据Marija Stankova、David Martens和Foster教务长的工作
参考文献
Stankova,M.,Martens,D.,&Provost,F.(2015年)。二部图的投影分类。(研究论文/安特卫普大学。应用经济学学院;2015-001 D/2015/1169/001)。全文(开放存取):https://repository.uantwerpen.be/docman/irua/07acff/c5909d64.pdf