鱼C论坛

 找回密码
 立即注册
查看: 4296|回复: 29

我是新手,帮看下怎么做,悬赏10鱼币

[复制链接]
发表于 2014-9-11 18:39:45 | 显示全部楼层 |阅读模式
10鱼币
    最近在做个数据稀疏性处理,三个字段Uid,Iid,Rui,Uid表示用户,Iid表示项目,Rui表示用户u对项目i的评分。因为用户u不可能对所有的项目i评分,所以我要做的是把用户u没有评分的项目i做个估计值Rui。首先说一下,我的数据在txt文本文档的格式如下图(用户数、项目数是个定值):

    下面有三种处理方式:第一种是,空值根据此用户u评分平均值代替;第二种是,空值根据此项目i评分平均值代替;第三种,空值根据前两项的平均值再平均。不知道我说清楚了没,我分别举个例子。假如有5个用户,8个项目,用户U1对I2、I3、I4、I5的评分时1、2、3、4,那么根据第一种做法,U1对I1、I6、I7、I8的评分估值应该为(1+2+3+4)/4 = 2.5,注意此时R11=2.5;假如I1被用户U2、U3、U4的评分是1、2、3,那么I1被用户U1、U5的评分估值为(1+2+3)/3 = 2,注意此时R11=2;按照第三种做法,R11 = ((1+2+3+4)/4 + (1+2+3)/3) /2= 2.25。最后按照原始数据格式输出所有的数据,应该是5*8 = 40行。

最快给我的可以追加分,谢谢~

捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-11 19:35:05 | 显示全部楼层
貌似不那么通俗易懂。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-9-11 19:37:21 | 显示全部楼层
wei_Y 发表于 2014-9-11 19:35
貌似不那么通俗易懂。。

可能是描述的不好,你认真看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-11 22:25:27 | 显示全部楼层
对不起,没看懂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-13 17:47:55 | 显示全部楼层
我才是新手,我咋没有看懂你这是啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-23 09:40:35 | 显示全部楼层
新手帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-25 13:18:01 | 显示全部楼层
:sweat: 新来的表示没看明白~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-25 16:43:36 From FishC Mobile | 显示全部楼层
我也没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-25 17:08:41 | 显示全部楼层

蹭个鱼币。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-25 17:12:27 | 显示全部楼层
大神求解释 数据稀疏性??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-26 22:17:12 | 显示全部楼层
不懂帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-6 08:45:52 From FishC Mobile | 显示全部楼层
没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-7 22:39:48 | 显示全部楼层
看不懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-8 19:06:05 | 显示全部楼层
看不懂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-18 10:12:37 | 显示全部楼层
真心看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-18 12:54:16 | 显示全部楼层
新手帮顶,看谁能解决。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-20 02:01:37 | 显示全部楼层
找大神吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-24 15:58:05 | 显示全部楼层
现在我连说自己是新手的资格都木有了....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-24 16:07:34 | 显示全部楼层
帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-9 20:37:39 | 显示全部楼层
可以利用numpy模块解决这个问题:

def 文件to数组(路径/文件名txt)
    这个函数完成文件到数组的导入,3列N行的二维数组
    这里要先把空值的Rid填0
    return数组变量 Metrix

def 找出空值(Metrx)
    取第三列RUI的值转换成序列 List_RID
    k=0
    row_num = []
    for i in List_RID:
          if i==0:
               row_num.append (k) #这里就找到哪些Rid是0,然后把他们的序号(下标)给了row_num这个序列
                                                 #假如第2和第5行的RUI是0,那么这里row_num就会是[2,5]
    return row_num

def 计算方案1、2、3需要的和的平均值
      首先是方案一的
      先计算出每个Uid对应Rid的和平均值,可以针对Uid一列进行sorted整形
          将结果导入到新建的字典Row_dict_1{}中,可以使用get方法,形成这样的结果Row_dict_1{Uid:平均值}

      然后是方案二的
      把方案一的Uid换成Iid那一列就行,得到Row_dict_2{Iid:平均值}

def 方案1(Metrx , low_num,Row_dict_1):
     for i in row_num
          利用row_num的每个元素在Metrx中找到对应的Uid,再从Row_dict_1中Row_dict_1[Uid]的值就是该平均值
          填入该平均值到Metrx中替换0
     替换完所有的0后
     return Metrx_1

def 方案2(Metrx , low_num,Row_dict_2):
      与方案1一样,只是把Uid换成了Iid
      return Metrx_2

def 方案3(Metrx , low_num, Row_dict_1,Row_dict_2):
      针对每个row_num元素,先在Metrx中找到Uid与Iid,然后通过查找Row_dict_1[Uid]与Row_dict_1[Iid]
      相加除以2赋值给New_Rid
      将Rid填入该Rid位置替换0
      return Metrx_3
-------------------------------------------------------------
当然这些你得熟悉numpy库、数组索引方式与字典操作方式,有兴趣试试看能否写出来吧~



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 17:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表