意见传播模型初试
来源:互联网 发布:猎豹安全浏览器mac 编辑:程序博客网 时间:2024/05/16 01:44
算法概述
在意见领袖中寻找路径的方法是将每个领袖拓展一定范围的节点,来判断是否存在路径可以连接,根据实际情况我们选择了并查集(union-find sets)算法并确定拓展的节点为2(实际上拓展到3就会几乎包括到数据内的所有节点,而大部分路径其实在邻居节点就能找到)、
而并查集算法是快速判断两个节点是否在统一集合和集合合并的经典算法,具体方法大概是构建树并将根节点固定,递归查询并进行路径压缩
尝试和初版
先将所有的意见领袖并入一个队列,然后逐层扩展队列,扩展时初始化并查集,在扩展时如果遇到该节点在队列内,则有可能是两个节点的‘交点’,则进行判断然后合并集合,如果到最后所有意见领袖同在一个集合,则路径存在,找路径的方法根据交点层数有所不同,大部分为:
领袖—交点—领袖—交点—领袖……
少部分为:
领袖—邻居—交点—邻居—领袖……
所以代码如下
import stringdef load_data(filepath): v_dict = {} with open(filepath) as f: for line in f.readlines(): line = line.strip().split('\t') #print (line) for i in range(2): if line[i] not in v_dict: sv_dict = {} sv_dict[line[1-i]] = 1 v_dict[line[i]] = sv_dict else: sv_dict = v_dict[line[i]] if line[1-i] not in sv_dict: sv_dict[line[1-i]] = 1 v_dict[line[i]] = sv_dict else: sv_dict[line[1-i]] = sv_dict[line[1-i]]+1 v_dict[line[i]] = sv_dict return v_dictdef findx(x, fnd): if x == fnd[x]: return x else: fnd[x] = findx(fnd[x], fnd) return fnd[x]if __name__ == "__main__": v_dict = load_data('C:/Users/ASUS-PC/Desktop/data.txt') """ top_list = [] with open('', 'r') as f: for line in f.readlines(): top_list.append(line) """ top_list = ['69433112', '87834473', '18451956', '49590472', '14136608', '92869265', '75282315', '81083101', '89023334', '63845859', '91372070', '21034313', '10313578', '106672906', '41331964', '2389780', '13087802', '5475410', '10167559', '6877822'] print ('data load ok') fnd = {} for u in v_dict: fnd[u] = u queue = [] union1 = [] union1.append(top_list[0]) for top in top_list: queue.append(top) print ('queue append ' + top) for i in range(2): for u in queue: for v in v_dict[u]: if v in top_list: pass elif v not in queue: queue.append(v) fnd[v] = u if v not in union1 and findx(u, fnd) == top_list[0]: union1.append(v) #print (v + ' add queue') elif v in union1: x = findx(queue[0], fnd) y = findx(u, fnd) if x != y: fnd[y] = x print ('in the ', i, 'th, ' + v + ' already exists and top <' + y + '> has added') #else: #print (v + ' is in the union') #print (fnd)
结果大致如下
对下一步的思考大概是能否从这个模型中寻找一个共通点从而找出普遍性规律在以后的干涉中加以应用
阅读全文
0 0
- 意见传播模型初试
- 初试CSS-盒模型
- SI疾病传播模型实现
- 初试
- 初试
- 初试
- 初试
- 传播力模型的初步探讨
- 社交网络上的影响传播模型
- 反向传播BP模型(属于神经网络)
- 知识在超网络中的传播模型
- DOM模型事件传播机制应用
- 链接分析之随机游走模型和子集传播模型
- 初试主题模型LDA-基于python的gensim包
- 传播
- 关于病毒扩散与传播的控制模型
- jquery之jquery事件处理模型(影响事件传播)
- JavaScript中的事件传播(DOM2标准事件模型)
- Application.persistentDataPath保存字符串到本地
- maven 项目管理器入门
- POJ 1509Glass Beads
- poj2018 Best Cow Fences(直接求斜率)
- cookie、SessionStorage、localStorage的用法
- 意见传播模型初试
- javascript数组(1) ——sort的工作原理及其他数组排序方法
- Golang Web 框架 Beego 快速入门
- 第三章 正则表达式括号的作用
- 整理:“烫烫烫”与“锟斤拷”的原理
- ZOJ 1729 Hidden Password
- 微信公众号发送中奖模板消息
- HDU 4763Theme Section
- 判断存储过程查询条件参数为空