Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mahout Recommender无输出-关于输入文件格式_Mahout_Mahout Recommender - Fatal编程技术网

Mahout Recommender无输出-关于输入文件格式

Mahout Recommender无输出-关于输入文件格式,mahout,mahout-recommender,Mahout,Mahout Recommender,我正在使用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.Pearso

我正在使用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运行此程序时,它在eclipse中有输出:

RecommendedItem[item:104, value:4.257081]
RecommendedItem[item:106, value:4.0]
文件ratingsShort.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
当我使用ratingsShort.dat时,eclipse中没有输出

FileDataModel(File dataFile, String delimiterRegex)
Mahout中的方法支持这种用法,但为什么它没有输出


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

好的。我解决了我的问题。我把我的电影从ml-10m.zip改成了ml-1m.zip。它确实有输出

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


足够mahout计算推荐值,但不是我的数据集,我将剪切。

您需要将您的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

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