the mahout achieves many ml algorithm ,such as recommend system, clustering ,classify and so on。。
primary recommend system。
data loaded : datamodel = newfilemodel(new file(" "));
=mydatamodel.getdatamodel // via data base >sql
recommend method :
(1) user-based
1
2
3
4
5
6
7
8
|
DataModel model =
new
FileDataModel(
new
File(
"data/intro.csv"
));
UserSimilarity similarity =
new
PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =
new
NearestNUserNeighborhood(
2
,similarity,model);
Recommender recommender=
new
GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recommendations =recommender.recommend(
1
,
1
);
for
(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
|
(2) item-based
1
2
3
4
5
6
7
|
DataModel model =
new
FileDataModel(
new
File(
"data/intro.csv"
));
ItemSimilarity similarity =
new
PearsonCorrelationSimilarity(model);
Recommender recommender=
new
GenericItemBasedRecommender(model,similarity);
List<RecommendedItem> recommendations =recommender.recommend(
1
,
1
);
for
(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
|
(3) slope-based
1
2
3
4
5
6
|
DataModel model =
new
FileDataModel(
new
File(
"data/intro.csv"
));
Recommender recommender=
new
SlopeOneRecommender(model);
List<RecommendedItem> recommendations =recommender.recommend(
1
,
1
);
for
(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
|
(4) knn-based, svd-based ,tree-based
itemCF,itemKNN,SVD's Rrecision,Recall are the best
frequently api:
- recommend(long userID, int howMany): 获得推荐结果,给userID推荐howMany个Item
- recommend(long userID, int howMany, IDRescorer rescorer): 获得推荐结果,给userID推荐howMany个Item,可以根据rescorer对结构重新排序。
- estimatePreference(long userID, long itemID): 当打分为空,估计用户对物品的打分
- setPreference(long userID, long itemID, float value): 赋值用户,物品,打分
- removePreference(long userID, long itemID): 删除用户对物品的打分
- getDataModel(): 提取推荐数据