社交网络分析
文章平均质量分 54
梦否
【@】bug修复,程序代做
展开
-
Influence Maximization with Python(一)
文章目录1. 前言2. 经典算法2.1 贪心算法2.1.1 Independent Cascade独立级联1. 前言一直以来都想做一个全篇的总结,但是其实自己在IM中还才处于起步阶段,所以还做不到自己预期的关于IM的全篇总结。在这篇文章中,简单的对现有的解决IM问题的经典算法进行一个汇总。2. 经典算法2.1 贪心算法首先看下贪心算法的伪代码:【注】上面算法摘自论文:《Positive opinion maximization in signed social networks》当然原始论文原创 2022-01-18 12:09:01 · 907 阅读 · 13 评论 -
Role2Vec: Learning Role-based Graph Embeddings
Role2Vec: Learning Role-based Graph EmbeddingsStatistical Relational AI Workshop - IJCAI-18文章目录Role2Vec: Learning Role-based Graph Embeddings1. 前言2. Learning Role-based Graph Embeddings 简介3. Framework3.1 Mapping Vertices to Vertex-Types3.2 Attributed Ran原创 2021-11-18 20:07:04 · 1755 阅读 · 1 评论 -
Inf2vec: Latent Representation Model for Social Influence Embedding
Inf2vec: Latent Representation Model for Social Influence Embedding2018 IEEE 34th International Conference on Data Engineering1. 前言感觉这篇文章和自己之前做的研究方向挺相似的,所以这里想更加细致的看看这个工作,看有什么不同。且有什么值得注意和改进的。所以,看这篇论文的目标是:完全理解这篇文章在做什么;理清楚和自己之前做的工作有什么本质上或者表面上的区别;代码复现;原创 2021-11-16 09:06:14 · 1961 阅读 · 0 评论 -
从社交网络图的edgelist得到adj
为了从邻接列表中得到图的邻接矩阵表示,对我而言常见的一种做法是:import networkx as nxG = nx.read_edgelist('graph.edgelist')A_mat = nx.adjacency_matrix(G)但是,这么做存在一个问题。问题 那就是如果在文件graph.edgelist中对于有些图中的节点编号并没有存储到graph.edgelist文件中,也就是缺失了部分,但是对于该节点而言还是存在着特征数据,此时使用networkx读取到的G就会缺失这部原创 2021-05-06 14:28:58 · 1361 阅读 · 0 评论 -
矩阵乱序
features = [[12, 23, 12, 23, 2, 12], [22, 23, 12, 23, 2, 12], [32, 23, 12, 23, 2, 12], [42, 23, 12, 23, 2, 12], [52, 23, 12, 23, 2, 12], [62, 23, 12, 23, 2, 12], [72, 23, 12, 23, 2, 12原创 2021-03-24 09:28:25 · 148 阅读 · 0 评论 -
矩阵按行归一化
def row_normalize_matrix(matrix): """Row-normalize feature matrix""" rowsum = np.sum(matrix, axis=1, dtype=np.float32) r_inv = np.power(rowsum, -1) r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) return r_mat_inv.dot(matrix)原创 2021-03-24 08:44:53 · 2080 阅读 · 0 评论 -
社交网络数据集.mat文件的读取
例如Wikipedia数据集:https://snap.stanford.edu/node2vec/POS.mat得到的数据集即:POS.mat文件,我们需要对该文件进行读取。mat_path = '../data_procress/ppi.mat'load_mat = scio.loadmat(mat_path) # Load MATLAB file.输出load_mat为:{'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Creat原创 2021-03-10 20:19:28 · 935 阅读 · 0 评论 -
igraph与netwrokx的转换
igraph官网:https://igraph.org/python/#startpy值得注意的是,安装不是所见即所得的pip install igraph,而是:pip install python-igraph如题,本篇文章中将介绍的内容为networkx和igraph之间的转换。1. networkx转igraphimport networkx as nximport igraph as igg = nx.karate_club_graph()d = nx.to_pandas_ed原创 2021-03-10 18:05:43 · 1174 阅读 · 1 评论 -
`node2vec` & `TSNE` & 待解决问题
1. node2vecnode2vec: Scalable Feature Learning for Networkshttps://github.com/aditya-grover/node2vec这篇文章不是将它的思路和代码。只是因为在python中居然集成了node2vec,故而感觉很新奇,所以这里来进行一个简单的小实验。1. 安装pip install node2vec2. 训练使用karate_club_graph数据集,然后进行表示学习。from node2vec impo原创 2020-12-27 18:17:46 · 496 阅读 · 7 评论 -
网络邻接矩阵和节点的关联思考
对于网络表示学习,我们都知道是表示一个网络到一个向量空间中。而对于一个网络本身就存在一个常见的表示,即:邻接矩阵表示。那么这个邻接矩阵我们能够用来干什么?当然,这里主要考虑和节点的关联程度,这里就直接考虑相似度计算,如下:v_ = [ [0, 1, 1, 0, 0], [1, 0, 1, 1, 0], [1, 1, 0, 1, 0], [0, 1, 1, 0, 1], [0, 0, 0, 1, 0]]import mathimport numpy as原创 2020-12-21 16:51:37 · 2920 阅读 · 0 评论 -
pool.imap
网上搜索了一下,这个是Python的进程池的一种调用方法。我阅读的源代码中是这样写的:import multiprocessingwith multiprocessing.Pool(self.num_workers, initializer=initializer, initargs=(self.G, self.node_type)) as pool: # chunksize 将可迭代对象分为256份, 返回一个迭代器对象all_walks all_walks = list(pool.i原创 2020-12-01 11:13:28 · 4534 阅读 · 0 评论 -
random.shuffle(list)
shuffle() 方法将序列的所有元素随机排序。该函数没有返回值,会直接在原容器中乱序。eg:import randoma = [10, 20, 30, 40, 50, 60]b = random.shuffle(a)print(a) # [30, 10, 50, 20, 60, 40]print(b) # None原创 2020-12-01 08:33:31 · 2932 阅读 · 0 评论 -
tqdm简单理解
在阅读代码的时候,看见了这样一个用法,即:for node in tqdm(self.node_list(nodes, num_walks))那么,就来看看tqdm是什么。这篇文章python进度条库tqdm详解写的很好。tqdm是python进度条库, 主要有两种运行模式 ① 基于迭代器,自动更新; ② 基于手动指定代码更新;1.1 构造函数class tqdm(object): """ Decorate an iterable object, returning an i原创 2020-11-30 16:55:30 · 1018 阅读 · 0 评论 -
yield简单理解
在阅读别人源码的时候,看见了一个比较陌生的用法,即yield,这里就记录下。原文如下:def node_list(self, nodes, num_walks): for loop in range(num_walks): for node in nodes: yield node这篇文章python中yield的用法详解——最简单,最清晰的解释讲的挺好的。带有 yield 的函数在 Python 中被称之为 generator(生成器)在理解之原创 2020-11-30 15:01:42 · 211 阅读 · 0 评论 -
tensorflow1.*迁移到2
tf1.*版本支持一键转化为2.0版本迁移方法tf_upgrade_v2 --infile v1.*.py --outfile v2.0.pyv1.*.py为旧版本python文件。转载 2020-11-26 16:06:52 · 239 阅读 · 0 评论 -
负采样策略
前言 在多篇论文中均提及到了负采样策略,那么就来简单学习下什么是负采样策略。偶然搜到了两篇大佬的文章:负采样算法神经网络中的负采样顺便一提,找到了一个很nice的网站,看了网站的关于部分:算法初心者。白天生存,晚上生活。没有任何光鲜的经历,也没有任何过去的回忆。无论是互联网还是现实中,都不会保留任何“过去”的东西。喜欢有思想深度的事物,讨厌浮躁、拜金与安逸的人。对外面的世界失去了兴趣,希望一直活在“心境”里。爱了,爱了!!!希望向大佬靠拢。接着,来简单综合下负采样。正原创 2020-10-19 19:46:46 · 2084 阅读 · 0 评论 -
GRU(Gated Recurrent Unit)初探
在处理序列任务的时候,由于RNN存在梯度消失和梯度爆炸的原因:梯度消失:RNN梯度消失是因为激活函数tanh函数的倒数在0到1之间,反向传播时更新前面时刻的参数时,当参数W初始化为小于1的数,则多个(tanh函数’ * W)相乘,将导致求得的偏导极小(小于1的数连乘),从而导致梯度消失。梯度爆炸:当参数初始化为足够大,使得tanh函数的倒数乘以W大于1,则将导致偏导极大(大于1的数连乘),从而导致梯度爆炸。LSTM在1997年就提出来,通过门控单元来解决这个问题。在2014年GRU提出,相比LST原创 2020-10-09 16:13:02 · 637 阅读 · 0 评论 -
处理数据的常见操作
pandas存储数据到csv文件中import pandas as pd#任意的多组列表a = [1,2,3]b = [4,5,6] df = pd.DataFrame({'a_name':a,'b_name':b})#index表示是否显示行名,default=Truedf.to_csv("test.csv",index=False,sep=',')numpy 提取矩阵的某一行或某一列行众所周知可以用下标取得,其实就是列比较新奇:arr = np.array([[1.原创 2020-10-07 15:07:37 · 255 阅读 · 0 评论 -
关于gensim的一些使用记录
NLP神器Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。支持包括TF-IDF,潜在语义分析(Latent Semantic Analysis,LSA),潜狄利克雷分布(Latent Dirichlet Allocation,LDA),和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。概述概念名称说明语料(Corpus)数字化文档的集合,被用原创 2020-09-24 09:06:50 · 212 阅读 · 0 评论 -
python-louvain
安装louvain当前最新版本:0.14pip install python-louvain由于是处理社区的数据,这里还是安装networkxpip install networkx使用不妨来运行下一个案例:import community as community_louvainimport matplotlib.cm as cmimport matplotlib.pyplot as pltimport networkx as nx# load the karate club原创 2020-09-23 15:46:15 · 9972 阅读 · 7 评论