加入收藏 | 设为首页 | 会员中心 | 我要投稿 滨州站长网 (https://www.0543zz.cn/)- CDN、边缘计算、物联网、云计算、运营!
当前位置: 首页 > 大数据 > 正文

文本挖掘:社交网络、社群划分

发布时间:2021-02-21 07:46:03 所属栏目:大数据 来源:网络整理
导读:作者:Matt ? 自然语言处理实习生 http://blog.csdn.net/sinat_26917383/article/details/51444536 回复此公众号 “ 社交网络 ”获取word版原文查看。向小编咨询问题,联系 微信:hai299014 一、关系网络数据类型 关系网络需要什么样子的数据呢? ? ?笔者接

g<-g-V(g)[degree(g)==0]???


(3)相邻点的集合——neighbors(很重要)



  1. neighbors(g.zn,v=which(V(g.zn)$label=="会计"))??

  2. V(g.zn)$label[neighbors(g.zn,v=which(V(g.zn)$label=="取向"),mode="total")]??

  3. ???#默认mode设置是out,还有?in,total;其中V(g.zn)$label和V(g.zn)一个返回标签,一个返回值??

eighbors可以找出标签如果是“会计”的点,与之有关系的点的序号是啥;不过你也可以通过V(g.zn)$label让临近点的标签一起筛选出来


其中mode代表点出度(out)以及点入度(in),还有两个都有的点度(total)。
该函数可以对于点集,做附近的画像,比较好用。


2、关系网络中的线集E


(1)线集的类型

关系网络中线的关系比较多,loop线就是循环到自己的点,1-2-1;multiple代表线的重叠。

  1. which_loop(g)??#线是否能够指回自己,1-1就是指回自己??

  2. which_multiple(g)??#是否有重复线,后面1-1与前面1-1重复了??

(2)线集属性

线的属性中,自编译函数能够拿到线权重,E(g)$weight。但是没有标签项,这时候需要用set_vertex_attr加入线标签。


  1. g<-set_vertex_attr(g,"name",value=V(g)$label)??

原理就是把点集的标签,打到线集上来,name是默认的设置。
线集的属性中也可以跟数据集一样进行筛选操作。

  1. temp<-E(g)[order(E(g)$weight>25000)]??

(3)线集加减

线集的加减可以用add.edges以及-来实现


  1. g<-add.edges(g,t(edges))??#edges需要先转置??

  2. g<-g-E(g)[(weight>1)]??#删除部分线??


其中需要注意,add.edges中,需要把列数据,转置为行数据,平放id与词条。

同时线集也会有重复性的问题,见下文count.multiple(g) 以及simplify函数。


还有一些特别的函数,diameter(g)可以做到最长的链接经过了多少根线。


4、关系网络的重复性问题


在关系网络中,重复是常见的,而且无向线中1-2与2-1是重复的,重复线的数量也可以作为线的权重。也就是E(g)$weight。其中igrarh包中笔者看到两个函数跟重复性问题有关。count.multiple(g) 以及simplify函数。


(1)count.multiple(g) 函数


可以获得网络中线的重复情况。不重复是1,重复一次+1。比如:无向网络(1-2,2-3,2-1)就是(2,1,2)

等价于E(g)$weight


(2)simplify函数

函数常规式:simplify(g,remove.multiple = TRUE,remove.loops = TRUE,edge.attr.comb = "mean")

其中loops是指是否循环回自己,比如1-2-1就是一个循环到自己;multiple是指重复比如1-2,2-1。


  1. h?<-?graph(?c(1,2,1,3,4)?);h?????

  2. is_simple(h)??

  3. simplify(h,?remove.loops=FALSE)???#线重复,删除a->b,a->b删掉??

  4. simplify(h,?remove.loops=TRUE)????#在线方向性重复基础上删掉点重复,a->a,b->b??

  5. simplify(h,?remove.multiple=FALSE)#删掉点重复??

  6. simplify(h,?remove.multiple=TRUE)#删掉点重复同时,删除线a->b,a->b??

  7. simplify(h,?remove.multiple=TRUE,remove.loops=TRUE)?#删掉线重复、点重复??


simplify函数识别了两种重复方式,一种是线重复,比如1-2,2-1,;一种是点重复比如1-1,2-2就是点重复。

remove.multiple=TRUE,把重复的线删除
edge.attr.comb,使用重复次数来更新线权重E(g)$weight

(编辑:滨州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读