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

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第三方库


热门话题
java不支持org。阿帕奇。平民数学3。分配二元分布(1,p)`会带来很多性能开销吗?   java Android开发人员新手无法在模拟器中启动代码   显示不同版本的java版本和javac版本   java在这种情况下如何使用Spring和Hibernate正确更新对象?   java改变了我整个安卓 studio应用程序的主题   java在LIBGDX中生成可执行Jar文件   mysql对sql结果进行排序,并在java中通过循环在表中显示所有结果   swing如何在java中的textArea中新添加的文本末尾自动显示插入符号?   java需要验证时间,但会不断遇到问题   java像字符串一样拆分“数组”   java Apache Camel:具有属性和属性占位符的RecipientList不起作用   java中的文件子目录和主目录监视   java这样使用Spring规范谓词安全吗?   带Eclipselink的java Oracle 12c标识列   java为什么我在socket inputstream中遇到奇怪的字符   java Hibernate+swing检查登录/密码   java Log4j如何仅禁用致命条目   会话失效后找到的java数据   MySql查询:如何使用MySql和java同时执行两个查询?