全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
13579 9
2014-10-12

张丹在这篇博客http://blog.fens.me/r-mahout-usercf/里给出了协同过滤算法的R代码,但是其本身使用过多的for循环,影响了代码的执行效率,同时也没有把R语言的特色给体现出来。

现用R重新写一遍,看看使用 for和不用for的差别。数据在他的博客中下载。


比如第四部分的推荐算法,左一个for,右一个for,搞的人头昏,其实就是一个简单的加权平均。

4). 推荐算法

RECOMMENDER_NUM = 3

UserBasedRecommender = function(uid,n,M,S,N){

                        part = colnames(M)[is.na(M[uid,])]

                        m = S[uid, N[uid,]]

                        md = M[N[uid,],part]

                        if(length(dim(md)) >= 1) {

                                        a = colnames(md)[colSums(is.na(md)) == 0]

                                        score = colSums(md*m,na.rm = T)/apply(!is.na(md),2,function(x) sum(m[x]))

                                        res = score[order(score,decreasing=T)][1:n]

                                       res = res[intersect(names(res),a)]

                                       return(res)

                                       } else { res = NA}

                       }

5). 运行程序

R1 = UserBasedRecommender(1,RECOMMENDER_NUM,M,S,N);

R1

104  106

4.25 4.00  

用户推荐协同过滤算法.doc
大小:(24 KB)

只需: 5 个论坛币  马上下载



二维码

扫码加我 拉你入群

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

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

全部回复
2014-10-14 22:46:24
看看如何
二维码

扫码加我 拉你入群

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

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

2015-2-24 22:42:18
楼主 这个 testCF.csv的数据在哪里呀? uid iid 和 pref分别指的是什么呢
二维码

扫码加我 拉你入群

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

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

2016-3-24 14:41:37
点那个连接就能看到数据 了http://blog.fens.me/r-mahout-usercf/
二维码

扫码加我 拉你入群

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

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

2016-3-31 23:25:32
不错的资料!!!
二维码

扫码加我 拉你入群

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

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

2016-12-25 11:52:11
你好  里面apply(!is.na(md),2,function(x) sum(m[x]))  看不懂  不懂在function 和x的用法
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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