二部图二元节点分类的快速分类器

SW-transformation的Python项目详细描述


软件转换

sw变换是二部图(Stankova et al., 2015)中二元节点分类的一种快速分类器。二分图(或双图)由具有两种类型的节点定义,使得边缘仅存在于不同类型的节点之间(参见图1)。

title

图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

ddvlamin

许可证

这个项目是在麻省理工学院的许可下授权的-请参见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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用Selenium Java查找筛选器窗格“铅笔图标”的元素时出现问题   分布式缓存l2上使用infinispan和hibernate的java连接锁   使用Java的DOM XML API解析XML中的符号和   java是解析和操作字符串的有效方法   java发布NewRelicMeterRegistry时如何过滤仪表   多维数组在java中读取文件后将数据值分组   java如何将httpClient配置为jsoup   java BreakIterator在Android中是如何工作的?   找不到maven GAE类:原因:java。lang.ClassNotFoundException应用程序标识cRedential$AppenginecRedential包装   Jlabel调整java大小   调试如何在VScode中的java类依赖项中设置断点   java正在获取文件夹名,而不是。mp3文件{Android}   java如何将从DiffieHellman类生成的AES密钥添加到使用该密钥的类