Realitymining 数据集简单介绍与使用

  数据集的官网 http://realitycommons.media.mit.edu/index.html(可能需要FQ) ,下面是数据集的简要介绍(摘自官方网站)

The goal of this experiment was to explore the capabilities of the smart phones that enabled social scientists to investigate human interactions beyond the traditional survey based methodology or the traditional simulation base methodology. The subjects were 75 students or faculty in the MIT Media Laboratory, and 25 incoming students at the MIT Sloan business school adjacent to the Media Laboratory. Of the 75 Media Lab participants, 20 were incoming masters students and 5 were incoming MIT freshman, and the rest had remained in the Media Lab for at least a year.

本文的初衷是在尽可能保户用户隐私的情况下对用户进行好友推荐,而不是像许多文献那样(这里指获取用户的隐私数据,我个人觉得不可行.),这里只是在实验的情况下,因为在现实生活中,不会有人经常开着无线设备而为了得到一些无关紧要的推荐结果.本文思想是利用 bluetooth 数据,发现用户好友关系,对其简单的排序结果对用户进行好友推荐,并与随推荐结果相比较,验证其方法的可以行性.实验使用的数据集是 2004年,mit的数据,不知道有没近些年的相关数据集,有感兴趣的可以交流一下.

抽取部分自己需要的数据:

 1 %获取需要的数据,
 2 %转入原始数据
 3 data = load(‘realitymining.mat‘);
 4 %subject数据  struct 数组   1*106  struct
 5 %结构体数组  data.s(0)  - data.s(106)
 6 %可以采用这种方式 给新 结构数组 赋值   datalite.s(0).mac  =  data.s(0).mac
 7
 8 % 新建一个结构体数组,可采用 使用直接引用方式定义结构
 9 s = struct([]);
10 n = 1;
11 while (n~=107)
12     %添加想要的数据
13     s(n).mac = data.s(n).mac;
14     s(n).device_list_macs = data.s(n).device_list_macs;
15     s(n).device_list_names = data.s(n).device_list_names;
16     %这三列数据的 列数应该是相等的.
17     s(n).device_date = data.s(n).device_date;
18     s(n).device_names = data.s(n).device_names;
19     s(n).device_macs = data.s(n).device_macs;
20     s(n).neighborhood = data.s(n).neighborhood;
21     s(n).my_office = data.s(n).my_office;
22     n=n+1;
23
24 end
25
26 network = data.network;
27 save ‘slite‘ ‘s‘ ‘network‘

根据好友关系绘制拓扑图,结点显示 bluetooth的 mac号.

function ND_netplot(network,s)
    A = network.friends;
    [n,m]=size(A);
    w=floor(sqrt(n));
    h=floor(n/w);
    x = zeros(1,w*h);
    y = zeros(1,w*h);
    index = 0;
    for i=1:h           %使产生的随机点有其范围,使显示分布的更广
        for j=1:w
            index = index +1;
            x(index)=10*rand(1)+(j-1)*10;
            y(index) =10*rand(1)+(i-1)*10; 

        end
    end

    ed=n-h*w;
    for i=1:ed
       index = index +1;
       x(index)=10*rand(1)+(i-1)*10;
       y(index)=10*rand(1)+h*10;
    end
    plot(x,y,‘ok‘);    

    title(‘网络拓扑图‘);
    for i=1:n
        for j=1:n
            if A(i,j) == 1
                c=num2str(A(i,j));                      %将A中的权值转化为字符型
                text((x(i)+x(j))/2,(y(i)+y(j))/2,c,‘Fontsize‘,10);  %显示边的权值
                if i ~= j
                    arrow([x(j),y(j)],[x(i),y(i)]);         %带箭头的连线
                end
            end
            %hold on;
        end
        if i< 94
            %这里不显示点的序号,显示  mac地址.
            sub_index = network.sub_sort(i);
            mac = [‘--‘,num2str(s(sub_index).mac)];
            text(x(i),y(i),[num2str(sub_index),mac],‘Fontsize‘,9,‘color‘,‘r‘);   %显示点的序号
            disp([num2str(sub_index),mac]);
        end

    end
end 

结果如图:

到这里并不没做什么实际性的工作,只是将需要的数据分离出现.并将好友关系,以有向图的方式绘制出来 .

用户 hash_number 与之对应的 bluetooth mac

3--61961024887
4--61961024891
5--61961024929
6--61961024956
7--61961024927
8--61961025059
9--61961078506
10--61961024943
11--61961024868
12--61961078565
13--61961024950
14--61961078566
15--61961024968
16--61961024963
17--61960619991
19--61961024937
20--61961024824
21--61961024912
22--61961024938
23--61961025033
25--61960946218
26--61961078573
27--61961024853
28--61961078595
29--61960946349
30--61960946207
31--61961078619
32--61961024881
33--61961025202
35--61961024951
36--61961025054
37--61961024911
38--61961025073
40--61961078559
41--61965359991
42--61965359983
43--61965360050
44--61965359948
46--61964943979
48--61965019962
49--61964944350
50--61965359903
52--61964943984
53--61964979150
54--61964961925
55--61965020029
56--61965359944
57--61964979154
58--61964979130
60--61965019994
61--61965020015
62--0
63--61964944011
65--61964944067
66--61964943982
67--61965019987
68--61965020019
69--61964961927
70--61965359883
71--61964944054
72--61965019983
73--61965020021
74--61964943996
75--61964961871
76--61964944027
77--61965359909
78--61964944064
79--61965019992
80--14720303796
81--61965019959
82--61964979163
83--61964972168
84--61964944053
86--61964979139
87--61964944337
88--61965020009
89--61964944313
90--61964944046
91--61964944038
92--61964944018
93--61964944057
94--61964943986
95--61964944035
96--61964979158
97--61964944341
98--61965019996
99--61965359937
100--61965359920
101--413791240929
102--61961353423
103--413791240838
104--413787380563
106--

把好友关系蓝牙的扫描到的次数用用图形表示出来,程序写的比较乱便不贴上来了:

完善....

Realitymining 数据集简单介绍与使用

时间: 2024-09-30 05:37:25

Realitymining 数据集简单介绍与使用的相关文章

斯坦福机器学习公开课---1.机器学习简单介绍

斯坦福机器学习公开课---1. 机器学习简单介绍 1.1  介绍 机器学习流行原因--- 1)      由人工智能AI发展来的一个领域 2)      是计算机需要开发的一项新的能力,涉及工业和基础学科中的很多内容. 应用学习算法,如设计自主机器人,计算生物学和其他被机器学习影响的领域. 1.2  机器学习应用 1)        数据挖掘 网站点击流数据.电子医疗记录.计算生物学和工程学. 2)        无法手动进行编程的领域 自动直升机.手写体识别.自然语言处理NLP和计算机视觉.

Cloudera impala简单介绍及安装具体解释

一.Impala简单介绍 Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL.除了像Hive使用同样的统一存储平台,Impala也使用同样的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax).Impala还提供了一个熟悉的面向批量或实时查询和统一平台. 二.Impala安装 1.安装要求 (1)软件要求 Red Hat Enterprise Linux (RHEL)/CentOS 6.2

Python常用的库简单介绍一下

Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构建格式化的输出. difflib ,[Python]标准库,计算文本差异 . Levenshtein ,快速计算字符串相似度. Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. shortuuid ,一组简洁URL/UUID函数库. ftfy ,Uni

python的列表,元组和字典简单介绍

引 入 java                                   python 存取多个值:数组或list集合 ------------------------> 列表,元组 key-value格式:    Map        ------------------------>    字典 自己学习发现,java跟python这两门面向对象语言在数据类型的定义上,很多思想都是互通的,这里不说java,简单介绍一下python的列表,元组和字典. 一.列表 List: 最通

javascript的return语句简单介绍

javascript的return语句简单介绍:return语句在js中非常的重要,不仅仅具有返回函数值的功能,还具有一些特殊的用法,有个清晰的把握是非常有必要的.下面就结合实例简单介绍一下return语句的作用.一.用来返回控制和函数结果:通常情况,return语句对于一个函数是很有必要的,因为往往需要函数在一系列的代码执行后会得到一个期望的返回值,而此值就是通过return语句返回,并且将控制权返回给主调函数.语法格式: return 表达式 代码实例如下: function add(){

Object-c集合的简单介绍

一.简单介绍 NSArray/NSMutableArray NSSet/NSMutableSet NSDictionary/NSMutableDictionary NSArray.NSSet.NSDictionary是不可变的,创建的时候初始化 NSMutableArray.NSMutableSet.NSMutableDictionary是可变的 二.使用介绍 NSArray是有序的数组 NSMutableArray *myArray=[[NSMutableArray alloc] init];

plsql的环境与介绍:环境的搭建和plsql的简单介绍

PLSQL编程 1.环境的搭建 (1)创建一个存储表空间 SQL> conn /as sysdbaConnected. SQL> create tablespace plsql datafile '/u01/oracle/oradata/ORCL/plsql01.dbf' size 1G; Tablespace created. (2)创建PLSQL用户SQL> create user plsql identified by plsql default tablespace plsql;

CSS之box-sizing的用处简单介绍

前几天才发现有 box-sizing 这么个样式属性,研究了一番感觉很有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 例如:当一个容器宽度定义为 width:100%;  之后,如果再增加 padding 或者 border 则会溢出父容器,是向外扩张的 如果使用该样式,指定为 box-sizing: border-box; 则 padding 和 border 就不会再溢出,而是向内收缩的,这个效果感觉非常实用, 特别是 input 和 textarea 等 现在设置 100% 再直

【玩转微信公众平台之七】 PHP语法简单介绍

经过多篇的努力,我们终于成为了微信公众平台的开发者.但是别高兴的太早,就跟修真小说一样:修炼多年武破虚空,飞升到仙界后本以为成为了天仙即可跳出三界外,不在五行中.可实际到了仙界才发现,成仙只是修行的第一步......没错,成为开发者也才只是第一步,因为现在你的微信公众平台还没有任何功能,说难听点就是小白,说好听点就是白马王子,说可爱点就是小白白,说黄色点就是洗白白,说...----------------要想在微信公众平台添加功能,那就需要写代码:既然说到写代码,那么肯定是要用php(如果用AS