在探寻数据之间的关系时,由于数据类型的限制,很多时候我们可以从数据的现实角度出发去选择方法,而不是一昧地从头尝试不同方法去分类。假如我们用的是传染病在市面上的传播路径数据,亦或是病毒对于基因的感染模块,就可以采用社交网络分析的方法,它的原理是类似于我们平时使用软件时会弹出“你可能认识的人”,通过比对非共同好友的共同好友数来判断两人是否认识。

以下是一个例子:

# 安装必要的包
if (!require("igraph")) install.packages("igraph")
if (!require("tidygraph")) install.packages("tidygraph")
if (!require("ggraph")) install.packages("ggraph")library(igraph)
library(tidygraph)library(ggraph)
library(dplyr)# 生成模拟社交网络数据 - 50个节点的小世界网络
set.seed(123)
social_net <- sample_smallworld(1, 50, 3, 0.1)# 添加节点属性
V(social_net)$name <- paste("用户", 1:50)
V(social_net)$gender <- sample(c("男", "女"), 50, replace = TRUE)
V(social_net)$age <- sample(18:60, 50, replace = TRUE)# 添加边属性(关系强度)
E(social_net)$strength <- runif(ecount(social_net), 0.1, 1)# 转换为tidygraph对象
tidy_net <- as_tbl_graph(social_net)# 计算网络指标并添加到网络对象
tidy_net <- tidy_net %>% activate(nodes) %>% mutate(degree = degree(social_net),closeness = closeness(social_net),betweenness = betweenness(social_net))# 社区检测
communities <- cluster_louvain(social_net)# 添加社区信息到两个网络对象
V(social_net)$community <- communities$membership
tidy_net <- tidy_net %>% activate(nodes) %>% mutate(community = as.factor(communities$membership))# 查看社区划分
print(paste("检测到", length(communities), "个社区"))
print(sizes(communities))# 可视化社区结构 (使用tidygraph对象)
ggraph(tidy_net, layout = "fr") + geom_edge_link(aes(alpha = strength), show.legend = FALSE) +geom_node_point(aes(color = community, size = betweenness)) +geom_node_text(aes(label = name), size = 3, repel = TRUE) +scale_color_brewer(palette = "Set1") +theme_graph() +labs(title = "社交网络社区结构",subtitle = "节点大小代表中介中心性,颜色代表不同社区",color = "社区")# 基于共同好友的好友推荐
recommend_friends <- function(net, user_id, n = 3) {# 获取用户当前好友current_friends <- neighbors(net, user_id)# 找出有共同好友但还不是好友的用户candidates <- setdiff(V(net)[unlist(neighborhood(net, 1, current_friends))],c(user_id, current_friends))# 计算共同好友数common_friends <- sapply(candidates, function(x) {length(intersect(neighbors(net, user_id), neighbors(net, x)))})# 返回推荐列表recs <- data.frame(user_id = candidates,user_name = V(net)$name[candidates],common_friends = common_friends) %>% arrange(desc(common_friends)) %>% head(n)return(recs)
}# 为用户1推荐3个可能的好友
recommend_friends(social_net, 1, 3)

输出:

Community sizes1  2  3  4  5  6 
11  5 12  5  9  8 user_id user_name common_friends
1       5    用户 5              3
2      49   用户 49              3
3       6    用户 6              2

从输出中可以看到,社区之间存在明显的人数差异,说明网络存在社群结构;而用户5和49拥有一样的共友数量,则说明他们的社交重叠度更高,更有可能是认识的,从图中也能看到靠的更近。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款基于 React 的开源酷炫动画库

React Bits 是一个开源的交互式 React 组件库&#xff0c;包含一系列动画化、交互式且完全可定制的 React 组件&#xff0c;用于构建令人惊艳且难忘的用户界面&#xff0c;可帮助开发者在 React 应用中轻松实现各种动画效果。它提供了超过70种动画组件&#xff0c;分为文本动画…

深入理解前端理念bundleless

Bundleless 是一种新兴的前端开发趋势,它的核心思想是减少或完全去除传统的打包步骤,直接利用浏览器对现代 JavaScript 特性(尤其是 ES 模块)的原生支持。这一趋势背后的推动力包括现代浏览器的进步、开发者对更快开发反馈的需求以及更简单的开发流程。以下是对 bundleless…

马斯克YC技术核弹全拆解:Neuralink信号编译器架构·星舰着陆AI代码·AGI防御协议(附可复现算法核心/开源替代方案/中国技术对标路径)

一、Neuralink技术栈深度剖析 ▶ 神经信号编译架构&#xff08;基于已公开专利US20220369936&#xff09; 关键算法实现&#xff1a; # 运动意图解码核心&#xff08;简化版&#xff09; import numpy as np from sklearn.ensemble import RandomForestClassifierclass Neura…

【RK3568 嵌入式linux QT开发笔记】 二维码开源库 libqrencode 交叉静态编译和使用

本文参考文章&#xff1a;https://blog.csdn.net/qq_41630102/article/details/108306720 参考文章有些地方描述的有疏漏&#xff0c;导致笔者学习过程中&#xff0c;编译的.a文件无法在RK3568平台运行&#xff0c;故写本文做了修正&#xff0c;以下仅是自我学习的笔记&#xf…

git本地裸仓库的“激活”:在同一台 Linux 服务器上创建工作区

大家好&#xff01;在之前的文章中&#xff0c;我们探讨了 Git 裸仓库&#xff08;Bare Repository&#xff09;的概念&#xff0c;它是没有工作目录&#xff0c;只包含 .git 目录内容的特殊仓库格式&#xff0c;非常适合作为中心化的代码集散地或备份。我们也了解了 git clone…

如何排查在docker中运行软件的故障:Docker故障排查可视化指南,三招锁定问题根源

很多刚接触Docker的朋友常觉得故障排查很神秘。其实只需关注CPU、内存、磁盘这三大资源指标&#xff01;Linux终端虽强大但不够直观&#xff0c;下面教你用可视化工具轻松监控&#xff1a; 一、宿主机全局监控&#xff1a;FinalShell 掌控全局 连接宿主机 打开FinalShell&…

【论文笔记】【强化微调】T-GRPO:对视频数据进行强化微调

tulerfeng/Video-R1: Video-R1: Reinforcing Video Reasoning in MLLMs [&#x1f525;the first paper to explore R1 for video] 1. 引述 在强化微调中&#xff0c;像 GRPO、DAPO 这样的方法都是对文本或者图片进行微调思考&#xff0c;所以这类微调方法不对时序信息做处理&…

【Unity】动画系统

0 前言 早些时间学动画系统时的笔记&#xff0c;实际还没学完&#xff0c;后续计划会慢慢补全吧。 1 动画 通常来说动画都是动画师来做的&#xff0c;不过Unity也能实现简单的动画效果。PS&#xff1a;官方文档中&#xff0c;将动画称之为动画剪辑。 1.1 创建动画 首先在Unit…

C++二级指针的用法指向指针的指针(多级间接寻址)

指向指针的指针是一种多级间接寻址的形式&#xff0c;或者说是一个指针链。 指针的指针就是将指针的地址存放在另一个指针里面。 通常&#xff0c;一个指针包含一个变量的地址。当我们定义一个指向指针的指针时&#xff0c;第一个指针包含了第二个指针的地址&#xff0c;第二个…

【格与代数系统】示例

【格与代数系统】格与代数系统汇总 例1 设是由诱导的代数系统&#xff0c;则其上的二元运算满足&#xff08;ABCD&#xff09; A. B. C. D. 代数系统满足交换律、幂等律、吸收律、结合律 例2 是&#xff08;ABCD&#xff09; A.有界格 有界格&#xff1a;有最大、最小元…

Stable Diffusion 项目实战落地:手机壁纸制作-第一篇 从零基础到生成艺术品的第一步!

大家好!欢迎来到《StableDiffusion实战-手机壁纸制作》系列的第一篇! 在这一篇文章里,我们将一起探索如何用StableDiffusion(SD)这款强大的工具,快速制作出炫酷的手机壁纸。 如果你对生成艺术、AI绘图感兴趣,那你一定不能错过! 你能做什么?你将做什么! 在之前的系…

WEB3开启 Hardhat 自动验证有什么意义

这是个非常好的问题&#xff0c;尤其是你在学习 Web3 后端开发时&#xff0c;理解为什么要启用 Hardhat 自动验证合约源码&#xff0c;会让你开发流程更完整、更专业。 ✅ 一句话总结&#xff1a; 开启 Hardhat 自动验证的意义是&#xff1a;让你的合约在区块链浏览器&#xff…

Qt窗⼝的学习(一)

Qt窗⼝是通过QMainWindow类来实现的。 QMainWindow是⼀个为⽤⼾提供主窗⼝程序的类&#xff0c;继承⾃QWidget类&#xff0c;并且提供了⼀个预定义的 布局。QMainWindow包含⼀个菜单栏&#xff08;menubar&#xff09;、多个⼯具栏(toolbars)、多个浮动窗⼝&#xff08;铆 接部…

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

&#x1f4da; 本文主要总结了一些常见的C面试题&#xff0c;主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能&#xff0c;掌握这些内容&#xff0c;基本上就满足C的岗位技能&#xff08;红色标记为重点内容&#xff09;&#xff0c;欢迎大家前来学习指正&…

git提交的脚本无执行权限怎么办

问题描述 自己写的小项目&#xff0c;没有在服务器安装 Jenkins 进行项目部署&#xff0c;为了图方便&#xff0c;在项目中编写了一个 deploy.sh 脚本文件用来执行项目部署。但是在服务器上 pull 下来之后发现脚本文件没有执行权限&#xff0c;通过 chmod 命令进行赋权&#x…

004.chromium编译进阶-启动时传入cookies

一、目标&#xff1a; 实现传入参数--set-cookies[{"domain":"https://baidu.com","name":"AAAA","value":"111"},{"domain":"https://baidu.com","name":"BBB","…

【数据库复习】

数据库复习题 一、填空题1&#xff0e;数据库系统一般由&#xff08;数据库&#xff09;、应用系统、&#xff08;数据库管理系统&#xff09;、&#xff08;数据库管理员&#xff09;和用户构成。2&#xff0e;数据模型通常由&#xff08;数据结构&#xff09;、&#xff08;数…

微信小程序:选择页面单选实现(多页面均可选择)

一、效果展示 1、主页面 展示了两个选择行 2、选择页面 根据传递的参数决定员工展示的数据,并且单选,可将数据传递给主页面 二、主页面实现 1、视图层 写入了采购员和库管员的行选择信息 <view class="item flex flex-between"><view class="i…

使用docker-compose搭建redis-cluster集群

前言 如果你也因为centos的gcc版本落后导致redis编译安装不通过而烦恼&#xff0c;大可以试一试用docker去搭建redis集群。本文以单节点搭建redis-cluster三主三从为例。 ip&#xff1a;192.168.0.10redis信息&#xff1a; 客户端连接端口&#xff1a;7001 -7006集群间通信端…

【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程

【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程 1. 引言1.1 为什么选择 Qwen2.5-VL-3B-Instruct&#xff1f;1.2 环境要求 2. 环境搭建2.1 安装 LLaMA-Factory2.2 验证安装 3. 数据集准备与配置3.1 数据集结构3.2 数据格式3.3 数据集声明…