当前位置: 首页 > news >正文

用R语言和python进行社交网络中的社区检测

在这篇文章中,我用R语言和python检测社交网络中的社区。最近我们被客户要求撰写关于社区检测的研究报告,包括一些图形和统计输出。

   相关视频:复杂网络分析CNA简介与R语言对婚礼数据聚类(社区检测)和可视化|数据分享

复杂网络分析CNA简介与R语言对婚礼数据聚类(社区检测)和可视化

建立网络

Kaggle数据 在110个.egonet文件中(对应于110个匿名Facebook用户),每个文件都包含他的朋友的网络。 

让我们关注文件0.egonet,其中包含有关用户0的网络的所有信息。文件的每一行都是该行中直接属于网络一部分的第一个用户的朋友的列表。 

1

2

3

4

1: 146 189 229 201 204 ...

2: 146 191 229 201 204 ...

3: 185 80 61 188 22 222 ...

4: 72 61 187 163 177 138 ...

 在下面,我附加了访问每个egonet文件的Python代码,并构建了Networkx构造函数的节点和边的列表。 构建图后,将计算其邻接矩阵并将其保存在csv文件中。

import networkx as nx

from os import listdir

from os.path import isfile, join


from sklearn.cluster import KMeans



 

 

def load_egonet_files(path):

    """

给定.egonet文件的路径,则返回包含所有文件的列表。
    """

    onlyfiles = [fyle for fyle in listdir(path) if fyle.endswith('.egonet')]

    return onlyfiles

 

#########################################################################################################

  

提供的代码的结果是110个CSV文件,其中包含每个自我网络图的邻接矩阵。

检测社区

首先,让我们绘制一个图,看看它在社区聚类检测之前的样子。在R代码下方,从CSV文件加载数据,构建网络(我们使用0.egonet)并进行绘制。

 

#从csv文件读取图形

dat = read.csv('graph-0.csv', header=TRUE, row.names=1, check.names=FALSE)

m = as.matrix(dat)

# 从邻接矩阵构建图

g = graph.adjacency(m,mode="undirected",weighted=NULL)

 

# 绘制图形

 

  

R 提供了几种强大的社区检测算法。 

模块化本质上是属于给定组的边缘的分数减去如果边缘随机分布的期望分数。所以越高越好。

在这里,您可以在用户0网络上找到结果。


> modularity(wc)

[1] 0.4629543

 

> modularity(wc)

[1] 0.4463902

 


> modularity(wc)

[1] 0.4330911

 


> modularity(wc)

[1] 0.4649535

 


> modularity(wc)

[1] 0.4511259

 

> modularity(wc)

[1] 0.4314803

 spinglass.community算法是最好的算法,其模块化为0.4649。事实证明,可以发现小型自我社会网络中的社区 。

在下面,您也可以在R中发现检测到的群集的良好可视化效果。 


相关文章:

  • 前端 -- if-else嵌套地狱
  • 春季打卡圣地|超出片的成都文创产业园
  • 交通工程绪论
  • 【题解】AB5 点击消除(栈)
  • Verilog 不可综合部分
  • 【面试经典 150 | 链表】删除链表的倒数第 N 个结点
  • c++实现栈和队列类
  • LiveGBS流媒体平台GB/T28181功能-查看国标设备下通道会话列表直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话
  • Docker基础(一)
  • mybatis---->tx中weekend类
  • ABC342 题解
  • springboot基础(82):分布式定时任务解决方案shedlock
  • Android 10.0 Launcher3单层高斯模糊(毛玻璃)效果的实现
  • 自定义RBAC(1)
  • (Qt) 子组件绘制QPainter
  • (附源码)springboot平衡膳食小程序 毕业设计 250859
  • [附源码]计算机毕业设计基于springboot的图书互换系统
  • 二叉树OJ题详解
  • 十一、面向对象 其他要点
  • 数据结构—树、有序二叉树
  • Spring Boot文档阅读笔记-Scheduling Tasks
  • HTML爱心照片墙源码
  • [附源码]计算机毕业设计基于SpringBoot的党务管理系统
  • 使用Python和SAS Viya分析社交网络
  • Java并发编程学习14-任务关闭(上)
  • Nginx安装搭建之源码方式(Centos7)
  • 华为网络模拟器ENSP安装(附安装包)
  • [附源码]计算机毕业设计基于Springboot的项目管理系统
  • RISC-V SiFiveU64内核——L2 Prefetcher预期器
  • Java项目:SSM电器商城系统
  • 线程池详细介绍
  • 微服务框架 SpringCloud微服务架构 10 使用Docker 10.9 数据卷挂载案例2