Mahout对于GroupLens数据定制的推荐引擎,mahoutgrouplens


/*
 * 这段程序是使用GroupLens定制的DataModel数据模型
 * 因为这里的数据是以逗号隔开的。
 * 这里我把数据量加大,变成了20M的数据
 * 这里使用的数据模型是对于GroupLens定制的GroupLensDataModel
 * */
package byuser;

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

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.eval.LoadEvaluator;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.similarity.precompute.example.GroupLensDataModel;

public class GenericUserRecommeder_GroupLens {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			//进行数据的装载
			//生成数据模型
			DataModel model = new GroupLensDataModel(new File("E:\\mahout项目\\examples\\ratings.dat"));
			UserSimilarity similarity = new org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity(model);
			UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity, model);
			//生成推荐引擎
			Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
			LoadEvaluator.runLoad(recommender);
			//为用户已推荐一件商品recommend( , );其中参数的意思是:第几个人,然后推荐几件商品
			List<RecommendedItem> recommendations = recommender.recommend(1, 1);
			for(RecommendedItem recommendation : recommendations){
				System.out.println("GroupLens定制,为您推荐的商品是:" + recommendation);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TasteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
//这里的数据结果会出现很慢,因为这里的数据我跑的是1M的数据。 



如图:




相关内容

    暂无相关文章