Mahout基于物品的协同过滤算法例子

每行测试数据分别标识用户id(uid),物品id(itemid),评分(rating),评分时间(time)
464,2551,4,967174774
3464,1753,3,967247306
3464,144,5,967247759
3464,147,5,967247262
3464,2700,4,973282730
3464,2702,3,973282730
3464,3505,4,967174607
3464,1902,3,967247623
3464,2706,4,967247974
3464,2707,3,967174960
3464,2561,2,967175196
3464,2567,3,967248019
3464,2710,3,967248117
3464,3513,4,967174748
3464,2712,5,967247141
3464,2716,3,973282421
3464,2571,2,967174504
3464,2718,3,967247991
3464,1916,1,967247436
3464,1917,4,967248249
3464,1777,3,967247644
3464,163,4,967174438
3464,2723,2,973282547
3464,1921,1,967174680
3464,2724,3,973282625
3464,3527,4,967174607
3464,1923,4,967246896
3464,3528,4,967248296
3464,2580,3,967246792
3464,2729,3,995682389
3464,318,5,967246638
3464,175,3,967248091
3464,2730,4,995682389
3464,3534,3,973282197
3464,3535,4,967174864
3464,2598,3,973282604
3464,180,4,967247165
3464,2599,3,973282371
3464,185,3,967175105
3464,1003,3,967175028
3464,333,3,967248117
3464,11,3,967248043
3464,337,5,967247100
3464,16,5,967174586
3464,17,5,967247306
3464,18,5,967174960
3464,198,3,967248158
3464,3555,3,973282913
3464,1951,4,967174139
3464,3557,4,967175159
3464,1959,3,973282547
3464,22,4,967174702
3464,345,3,967247697
3464,24,3,967248296
3464,25,3,967247288
3464,349,4,967174659
3464,3708,4,967175159
3464,2906,3,973282604
3464,2907,3,973282730
3464,2908,3,973282281
3464,2762,4,967174414
3464,2763,4,967174774
3464,3566,1,973283006
3464,2764,4,967174659
3464,350,3,967247735
3464,353,4,967175051
3464,32,4,967246896
3464,356,5,967247100
3464,34,3,967246879
3464,36,4,967246806
3464,358,4,967248158


package userBased;

import java.io.File;
import java.util.List;

import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;

/**
 * mahout基于物品的协同过滤
 *
 */
public class ItemBased {

    public static void main(String[] args) throws Exception {

        DataModel model = new FileDataModel(new File("F:/ml-1m/ratings.dat"));
        ItemSimilarity similarity = new PearsonCorrelationSimilarity(model);
        Recommender recommender = new GenericItemBasedRecommender(model, similarity);// 构造推荐引擎
        //为用户6003推荐两个物品
        List<RecommendedItem> items = recommender.recommend(6003, 2);
        for(RecommendedItem item:items){
            System.out.println(item.getItemID()+","+item.getValue());
        }

        LongPrimitiveIterator iter = model.getUserIDs();

        while (iter.hasNext()) {
            long uid = iter.nextLong();
            List<RecommendedItem> list = recommender.recommend(uid, 3);
            System.out.println("uid="+uid+":");
            for (RecommendedItem ritem : list) {
                System.out.println("["+ritem.getItemID()+":"+ritem.getValue()+"]");
            }
            System.out.println();
        }
    }
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值