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();
        }
    }
}
發佈了32 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章