我正在尝试学习Apache mahout,这是该主题的新手。我想实现基于用户的推荐器。为此,在互联网上进行探索之后,我发现了以下示例
public static void main(String[] args) {
try {
int userId = 2;
DataModel model = new FileDataModel(new File("data/mydataset.csv"), ";");
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(userId, 3);
for (RecommendedItem recommendation : recommendations) {
logger.log(Level.INFO, "Item Id recommended : " + recommendation.getItemID() + " Ratings : "
+ recommendation.getValue() + " For UserId : " + userId);
}
} catch (Exception e) {
logger.log(Level.SEVERE, "Exception in main() ::", e);
}
我正在使用以下数据集,其中分别包含用户ID,项目ID,首选项值,
1,10,1.0
1,11,2.0
1,12,5.0
1,13,5.0
1,14,5.0
1,15,4.0
1,16,5.0
1,17,1.0
1,18,5.0
2,10,1.0
2,11,2.0
2,15,5.0
2,16,4.5
2,17,1.0
2,18,5.0
3,11,2.5
3,12,4.5
3,13,4.0
3,14,3.0
3,15,3.5
3,16,4.5
3,17,4.0
3,18,5.0
4,10,5.0
4,11,5.0
4,12,5.0
4,13,0.0
4,14,2.0
4,15,3.0
4,16,1.0
4,17,4.0
4,18,1.0
在这种情况下,它可以正常工作,但是我的主要问题是我拥有不包含首选项值的不同数据集,其中包含一些基于我正在考虑计算首选项值的数据。以下是我的新数据集,
userid itemid likes shares comments
1 4 1 20 3
2 6 18 20 12
3 12 10 2 20
4 7 0 20 13
5 9 0 2 1
6 5 5 3 2
7 3 9 7 0
8 1 15 0 0
我的问题是如何根据其他一些列(如顶,分享,评论等)为特定记录计算首选项值。是否可以在mahout中进行计算?
最佳答案
是的-我认为您的代码段来自Mahout的较旧版本,但是您要使用的是“相关相关事件”推荐器。 CCO推荐人是多模式的(允许用户输入各种内容)。
有CLI驱动程序,但是我想您想编写代码,这里有一个Scala教程here
我认为在本教程中,我会根据标记的流派和喜欢的艺术家来推荐“朋友”,以及您目前的朋友。
关于java - 在Apache Mahout中计算首选项值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48664462/