使用Python和SAS Viya分析社交网络

news2024/9/20 22:38:43

 

本示例使用Python和SAS分析了预防高危药物研究的结果。这个社交网络有194个节点和273个边,代表药物、使用者之间的联系。最近我们被客户要求撰写关于社交网络的研究报告,包括一些图形和统计输出。

背景

SAS Viya的最新版本提供了用于探索实验问题的全套创新算法和经过验证的分析方法,但它也是基于开放式体系结构构建的。这意味着可以将SAS Viya无缝集成到应用程序基础架构中,并使用任何编程语言来驱动分析模型。 

尽管你可以继续进行并简单地发出一系列REST API调用来访问数据  但通常使用编程语言来组织你的工作并使之可重复更有效。我决定使用Python,因为它在年轻的数据科学家中很流行 。

出于演示目的,我使用一个名为Jupyter的接口,该接口是一个开放的,基于Web的交互式平台,能够运行Python代码以及嵌入标记文本。 

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

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

 

访问SAS云分析服务(CAS)

SAS Viya的核心是称为SAS Cloud Analytic Services(CAS)的分析运行环境。为了执行操作或访问数据,需要连接会话。您可以使用连接(建议使用该连接来传输大量数据),也可以通过HTTP或HTTPS通信使用REST API。 


 import matplotlib.colors as colors #程序包包括用于颜色范围的程序
 import matplotlib.cm as cmx
 import networkx as nx #呈现网络图
 

现在已经加载了库,我们可以发连接到CAS并为给定的用户创建会话。 

 s = CAS('http://sasviya.mycompany.com:8777', 8777, 'myuser', 'mypass')

对于此网络分析,我将使用一个名为hyperGroup 的集。

​
 s.loadactionset('hyperGroup')

​

加载数据 

为了执行任何分析建模,我们需要数据。 将本地CSV文件上载到服务器,并将数据存储到名为DRUG_NETWORK的表中。该表只有两列数值类型的FROMTO

​
 inputDataset = s.upload("data/drug_network.csv", casout=dict(name='DRUG_NETWORK', promote = True))

​

在分析建模期间,通常必须更改数据结构,过滤或合并数据源。 这里的put函数将两个数字列都转换为新的字符列SOURCETARGET

​
 sasCode = 'SOURCE = put(FROM,best.); TARGET = put(TO,best.);\n'
 dataset = inputDataset.datastep(sasCode,casout=dict(name='DRUG_NETWORK2', replace = True))

​

数据探索

建立分析模型时的常见任务是首先了解数据。下面的示例返回数据集的前5行。

​
 dataset.fetch(to=5, sastypes=False, format=True) #列出开始5行

​


一个简单的汇总统计数据会显示更多详细信息,包括我们数据集中273条边的总数。

 dataset.summary()

图形布局

首先,我们将网络可视化,以基本了解其结构和大小。我们将通过力导向算法来计算顶点的位置。Hypergroup还可以用于查找群集,计算图布局以及确定网络度量标准,例如社区和中心性。

 

 s.hyperGroup.hyperGroup(
    createOut = "NEVER", # 这样可以禁止创建通常生成的表
    allGraphs = True, # 处理所有图形
    inputs    = ["SOURCE", "TARGET"], #指示边和目标列
    table     = dataset, # 输入数据集
    edges     = table(name='edges',replace=True), # 结果表包含edge属性
    vertices  = table(name='nodes',replace=True)  # 包含点属性的结果表
 )
 renderNetworkGraph() # 使用networkx包创建图形

 呈现了以下网络,并提供了图形的第一视图。我们可以看到两个主要分支,并了解高密度和低密度区域。 

社区检测

为了了解社交网络中用户的关系,我们将分析个人所属的社区。社区检测或聚类是将网络划分为社区,使社区子图中的链接比社区之间的链接更紧密地连接。同一社区中的人们通常具有共同的属性,并表示他们之间有着密切的联系。 

现在,更新后的节点表包含一个附加列_Community_  ,其中包含我们网络中每个节点的值。给定此数据集,我们可以执行基本统计信息,例如跨列的不同计数:

结果表显示,确定了我们网络中的24个社区。

让我们看一下最大的5个最大社区,并分析节点分布。 

我们将获取的行重定向到Python变量中。我们将使用它来生成条形图,显示前5个最大的社区:

这表明最大的社区13具有35个顶点。 以下示例显示社区4中的节点:

最后,让我们再次渲染网络–这次在为节点着色时考虑了社区:

通常,需要根据您的网络规模和期望的结果来调整社区的数量。将小型社区合并为大型社区。社区可以合并:

  • 随机进入邻近社区
  • 进入顶点数量最少的相邻社区
  • 以最大数量的顶点
  • 进入已经具有nCommunities顶点的社区

下面将通过指定nCommunities参数将社区总数减少到5 。

中心性分析

分析中心性有助于确定谁在网络中很重要。重要人物将被很好地联系起来,因此对网络中的其他个人具有很高的影响力。就我们针对社交网络而言,这将表明潜在的病毒传播和个人的相关风险行为。

每个度量标准都表示为节点数据集中的输出列。

让我们使用中心性度量之一作为节点大小再次渲染网络。 

 

子集网络分支

从我们的网络来看,社区2中的用户似乎扮演着重要角色。这由社区的整体中心地位,也由该社区中大多数个人的高beetweenness值表明。以下代码过滤并渲染了社区2的网络,仅使我们对该子网络有了更好的可视化。

上面的示例使用了标准的二维导向图布局。在更复杂的情况下,可能还需要在分析网络结构时考虑使用其他维度。 

 


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

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

相关文章

GIT分布式版本控制系统 | 命令讲解入门

Git概述 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件;分布式相比于集中式的最大区别在于开发者可以提交到本地&#xff0c…

车间调度|基于帝王蝶优化算法的车间调度(Matlab代码实现)

目录 1 概述 2 蝴蝶优化算法 3 车间调度 3.1 车间调度描述 3.2 数学模型 4 运行结果 5 参考文献 6 Matlab代码实现 1 概述 随着智能化在制造业中的普及,解决车间生产调度的问题能有效提高车间的工作学习效率,实现车间现场管理的有序化、智能化…

极客时间Kafka - 01 Kafka术语|生产者|消费者|主题|分区|副本|ISR|OSR|AR|HW|LEO|Offset

文章目录1. 为什么需要消息引擎?2. Kafka 相关术语3. Kafka 基本概念1. 为什么需要消息引擎? 答案就是“削峰填谷”。 所谓的“削峰填谷”就是指缓冲上下游瞬时突发流量,使其更平滑。特别是对于那种发送能力很强的上游系统,如果没…

Java—hashCode、equals

文章目录hashCode()介绍hashCode()hashCode方法作用为什么要有hashCode()?equals()equals()作用?为什么重写equals方法必须重写hashcode方法?128陷阱?equals和hashCode的关系——————————————————————————…

前端环境变量及vite中本地环境配置实践

前言 前端在之前并没有工程化的概念,甚至开发环境、测试环境、生产环境全靠大家手动配置。 有了nodejs之后,环境变量 (environment variables)这个概念,便慢慢进入了前端的视野,方便了前端各种环境自动化…

Android背景和音乐

Android背景和音乐前言一、添加背景图片二、加入背景音乐前言 简单的给app添加背景图和音乐 一、添加背景图片 准备好一张合适的背景图片新建一个Empty Activity项目选择Java语言在res中创建一个mipmap文件,将准备的图片粘贴到该文件目录下 在activity_main.xml里面添加代码…

mysql高阶语句

目录 前言 一、高级sql语句 1、按关键字排序 二、区间判断 ——且/或 三、 distinct 查询不重复记录 四、对结果进行分组 五、限制结果条目——limit 六、设置别名(alias ——>as) 七、通配符 八、子查询 前言 当我们对mysql数据库进行了查…

GJB 5000B二级-QA质量保证

1、主要变化情况 修订2条,合并1条(绿色),新增1条(黄色) 新增的主要内容 将原标准过程域名称“过程和产品质量保证”改为“质量保证” 目的:评价并改进已执行的过程和所产生的工作产品的质量,确保其满足已制定的过程说明和适用的标准。 (GJB5000A:过程和产品质量保…

RISC-V SiFiveU64内核——L2 Prefetcher预期器

目录L2 Prefetcher简介操作流退出页边界Memory Map控制寄存器L2 Prefetcher 初始化L2 prefetcher是U64内核新增的功能,U54内核没有这个功能。打开L2 prefetcher功能后,当访问大片内存,同时dcache中没有缓存时,访问内存的速率可以提…

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

在这篇文章中,我用R语言和python检测社交网络中的社区。最近我们被客户要求撰写关于社区检测的研究报告,包括一些图形和统计输出。 相关视频:复杂网络分析CNA简介与R语言对婚礼数据聚类(社区检测)和可视化|数据分享 复…

(一)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)简单的用法 …