每行测试数据分别标识用户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();
}
}
}