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

news2024/9/21 0:41:26

在这篇文章中,我用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中发现检测到的群集的良好可视化效果。 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(一)LTspice简介

文章目录前言一、举例1.1、RC滤波1.2、仿真结果二、软件安装总结前言 LTspice是一款高性能SPICE仿真器软件,包括原理图捕获图形界面。可探测原理图以产生仿真结果,通过LTspice内置波形查看器轻松探索。与其他SPICE解决方案相比,LTspice的增强…

mysql之SQL练习

常见面试题 学生表:student(学号,学生姓名,出生年月,性别) 成绩表:score(学号,课程号,成绩) 课程表:course(课程号,课程名称,教师号) 教师表:teacher(教师号,教师姓名) 1查询学生总成绩排名 SELECTstu_no,sum(score_prize) AS to…

安装Hadoop下hive的问题

ji问题的主要来源,由于收到安装文档后替换了一下,出现的问题 一,配置完成后,系统变量需要重启虚拟机, bash 变量需要刷新 #系统环境变量需要重启,bash变量只要source或切换就可以 source .bash_profile 我…

VUE+Spring Boot前后端分离开发实战(六):基于RABC权限通用后台管理系统-给角色动态分配权限和用户

文章目录 前言功能设计后端实现前端实现写在后面前言 本文记录了通用后台管理系统中RABC权限中两个功能:给角色分配权限、给角色设置用户。 给角色分配用户:前端使用到了elementUI中的tree,包括加载树以及给已选配权限给默认值等。给角色设置用户:前端用到了elementUI中的…

我们需要工具支持键集分页

我们需要工具支持键集分页 (use-the-index-luke.com) 您是否知道分页非常麻烦但很容易避免?offset offset指示数据库跳过查询的前 N 个结果。但是,数据库仍必须从磁盘获取这些行并按顺序排列它们,然后才能发送以下行。 这不是实现问题&…

超好用的大数据分析平台分享,SuccBI 一站式大数据分析平台

SuccBI 一站式大数据分析平台融合了数据汇集、加工、智能调度、自助分析可视化、中国式报表等功能为企业提供一站式的大数据分析处理能力。 数据汇集、加工 连接各类分散的数据并进行加工、清洗、调度、元数据管理,帮助企业轻松汇集、管理和共享数据资产。 丰富的数…

SAR信号处理基础2——线性调频信号频谱与驻定相位原理

前面已经给出了线性调频信号的时域表达形式,并介绍了信号的实部、虚部、相位、频率等,本文介绍线性调频信号的频谱,以及推导线性调频信号时常用的驻定相位原理。计算信号的频谱,实际上就是对信号做傅里叶变换。即 驻定相位原理认…

Java高校宿舍管理系统寝室管理(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频,手把手带同学们敲代码从0到1完成项目 该项目采用技术JSP、Servlet、jdbc、前端框架 bootstrap、jQuery,bootstrap-datetimepicker日期插件、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件、软件安装教程…

Linux和WIN的优势

1.性价比方面 Linux服务器与Windows服务器就性价比而言,Linux服务器优势是很明显的。Linux作为资源管理和操作系统来说,是开源、免费的,而正版的Windows的操作系统是收费的,因而就性价比来说Linux服务器优于Windows服务器。 2.性…

python的自定义函数的用法和实例

目录 1.自定义函数的语法和用法 (1)引入 (2)语法 (3)用法:用于自定义目标函数语法。 (4)调用函数 ①语法 ②解释 2.实例 (1)简单的用法 …

[附源码]计算机毕业设计小区物业管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Vector - VTESTStudio(软件篇) - CAPL实现MD5算法 - 01

OTA是当前车载行业非常热门的一个话题和研究方向,然而车辆又是跟大家的生命安全息息相关的一个日常工具,因此对于车辆升级的限制条件和安全阈值是我们不可避开的一个话题,今天我们来介绍一下对于文件的校验常用的一个算法MD5。 今天我们先来说下什么是MD5算法,这个…

Java基础:Object类、常用API

第一章 Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。 如果一个类没有特别指定父类, 那么默认则继承自Object类。例如&#…

MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(一)MOSFET技术

MOSFET技术 1.器件类型 2.MOSFET模型 3.MOSFET关键参数 4.开关应用 5.开通过程 6.关断过程 7.功率损耗 8.寄生器件的影响 双极晶体管和 MOSFET 晶体管的工作原理相同。从根本上说,这两种晶体管都是电荷控制器件,这就意味着它们的输出电流与控制电极在半…

4.1 一个简单的Linux Kernel模块

Linux内核包含非常多个组件,但不同的应用场景下需要打包的组件也不尽相同,更何况我们常常因为一些iot设备本身硬件资源有限,为了物尽其用要对内核组件进行裁剪。例如,对于路由器设备来说,我们再在打包Linux 内核时并不需要打包BT等驱动模块。Linux提供了一种称之为模块-Mo…

《MySQL实战45讲》学习笔记

《MySQL实战45讲》学习笔记 [TOC] 《MySQL实战45讲》学习笔记《MySQL实战45讲》学习笔记01.基础架构:一条SQL查询语句是如何执行的02.日志系统:一条SQL更新语句是如何执行的更新语句的执行流程重要的日志模块:redo log重要的日志模块&#x…

Mali GPU“补丁缺口”让 Android 用户容易受到攻击

©网络研究院 Arm 的 Mali GPU 驱动程序中的一组五个可利用漏洞在芯片制造商修补它们几个月后仍未修复,可能使数百万 Android 设备面临攻击。 来自谷歌、三星、小米、Oppo 以及其他手机制造商的设备目前受到影响,正在等待修复程序到达用户手中。 …

HTML爱心照片墙源码

HTML爱心照片墙源码 css charset "utf-8"; * {padding: 0;margin: 0; } div {font-family: "微软雅黑";font-size: 14px;color: #666;padding: 0;margin: 0;; } body,html{background: black;height: 100%; } /*css3实现照片墙的样式*/ .container {widt…

Java毕业设计 基于SSM的网上图书商城系统

对于传统书店来讲,利用计算机软件技术开发一款图书商城也会让书店员工省事不少,这个图书商城能让书籍信息还有注册用户信息,以及书籍订购等内容通过一个网络平台完全展示出来,让网站用户只要登录进去图书商城就可以查看所有的内容,用户可以查看新闻以及书籍产品及时更新的信息,…

【设计模式】设计模式

书籍推荐 《设计模式-可复⽤⾯向对象软件的基础》《重构与模式》 设计模式 设计模式是指在软件开发中,经过验证的,⽤于解决在特定环境下,重复出现的,特定问题的解决⽅案; 内存模型 扩展:c语⾔当中的多态…