全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3165 3
2016-06-21
数据集如图,有两个问题: QQ截图20150103154757.png ①想把数据集转化成矩阵,rowname为userid,colname为movieid,然后对应的矩阵值为wrating。
②之后要做一个算法,就是要将wrating这一项中,movieid相同但是userid不一样的数据进行两两相乘,例如movieID为1的用户总共有四个,那么第一个用户的wrating要分别乘上另外三个用户的wrating并做加和。求应该怎么做?跪求大神帮忙啊


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-6-21 18:12:20
先把矩阵的贴出来:
data rating;
        input userid movieid wrating;
datalines;
373 597 1.25
373 593 1.60
373 588 1.07
373 558 0.53
373 555 1.07
373 543 0.89
372 597 1.59
371 597 0.59
371 558 2.56
;
run;

proc sort data=rating;
        by userid ;
run;
proc transpose data=rating out=rating1;
        by userid;
        id movieid;
        var wrating;
run;
第二个问题,你是要计算转置之后的每一列的元素两两相乘再求和么,那对于每个userid的值都是一样的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-21 19:35:28
麦弥 发表于 2016-6-21 18:12
先把矩阵的贴出来:
data rating;
        input userid movieid wrating;
谢谢~第二个问题不是一样的,假设一个movieID有4个用户参与,那么
用户1的值就是wrating(1)*wrating(2)+wrating(1)*wrating(3)+wrating(1)*wrating(4).
用户2的值就是wrating(2)*wrating(1)+wrating(2)*wrating(3)+wrating(2)*wrating(4).
这样以此类推的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-21 20:23:54
麦弥 发表于 2016-6-21 18:12
先把矩阵的贴出来:
data rating;
        input userid movieid wrating;
抱歉抱歉,我刚才对第二问的说明有误,如下述:
像有些数据是这样的:
  userid\movieid    500   501   502   503   504
   001                   1.2    0.8    0.6    1.3    1.2
   002                   1.0    0.9    1.2    1.1    0.9
那么V(001,002)=1.2*1.0+0.8*0.9+0.6*1.2+1.3*1.1+1.2*0.9
是这样算的,类似于二部图算相似度时的评分相乘,然后因为userid的个数很多,假设有100个数据,那么001用户就得与剩余99个用户都进行一遍这样的计算,所以还存在一个循环问题。。。这里代码不是很清楚,主要不知道怎么定义矩阵中的每个值,还有怎么套用循环,让其可以计算(总用户-1)次,求助T^T


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群