【问题标题】:Mahout Recommender no output - about input file formatMahout Recommender 无输出 - 关于输入文件格式
【发布时间】:2014-12-17 13:48:23
【问题描述】:

我正在使用 mahout-distribution-0.9。我的程序有问题。

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

import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;


class RecommenderIntro {
    public static void main(String[] args) throws Exception {
            DataModel model =
            //new FileDataModel (new File("F:\\ml-10M100K\\intro.csv"));
            new FileDataModel (new File("F:\\ml-10M100K\\ratingsShort.dat"),"::");

            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, 2);
            for (RecommendedItem recommendation : recommendations) {
                    System.out.println(recommendation);
            }

    }
}

文件 intro.csv 中的内容是这样的:

1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0

当我使用 intro.csv 运行它时,它在 eclipse 中有输出:

RecommendedItem[item:104, value:4.257081]
RecommendedItem[item:106, value:4.0]

File ratingShort.dat 中的内容是这样的:

1::122::5::838985046
1::185::5::838983525
1::231::5::838983392
1::292::5::838983421
2::733::3::868244562
2::736::3::868244698

或将 ratingsShort.dat 的内容更改为:

1,539,5
1,589,5
2,110,5
2,151,3
2,733,3
2,802,2
2,1210,4
2,1544,3
3,1246,4
3,1408,3.5
3,1552,2
3,1564,4.5

当我使用 ratingShort.dat 时,eclipse 中没有输出。

FileDataModel(File dataFile, String delimiterRegex)

Mahout 中的方法支持这种用法,但是为什么没有输出呢?

谁能给我一些建议?非常感谢!

【问题讨论】:

    标签: mahout mahout-recommender


    【解决方案1】:

    好的。我发现了我的问题。我将电影镜头从 ml-10m.zip 更改为 ml-1m.zip。它确实有输出。

    所以,这个问题是因为我截取的数据集不合适!来自互联网的 intro.csv 是

    足以让 mahout 计算推荐值,但不能计算我随意剪切的数据集。

    【讨论】:

      【解决方案2】:

      您需要将您的 ID 转换为 Mahout ID。 Mahout 将用户和项目 ID 视为评级的行号和列号。因此,行/用户的第一个 ID 将是“0”,对应于您的 ID“1”,列/项目 ID 也是如此。如果您的 ID 只是上面显示的 ID,则需要将它们转换为 Mahout id,如下所示:

      0,2,5
      0,3,5
      1,0,5
      1,1,3
      1,4,3
      1,5,2
      1,6,4
      1,10,3
      2,7,4
      2,8,3.5
      2,9,2
      2,11,4.5
      

      如何将行/用户和列/项目 ID 映射到 mahout ID 并不重要(我在上面按排序顺序进行了此操作,但这不是必需的),但 Mahout ID 必须是连续的非负整数。然后,当您收到推荐时,必须将它们转换回您的 ID。

      【讨论】:

        猜你喜欢
        • 2014-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多