recommenderJobInput should point to the ratings.csv looks like it pointing to als output.
On Mar 19, 2015, at 10:15 AM, James Parker <evans.notc...@gmail.com> wrote: The step 3 is just to evaluate my recommender. I had follow the same steps using CLI and everything works well : (mahout splitDataset , mahout parallelALS, mahout recommendfactorized). I think that is something wrong with the RecommederJob class. Here is my java code: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ import org.apache.hadoop.conf.Configuration; import org.apache.mahout.cf.taste.hadoop.als.DatasetSplitter; import org.apache.mahout.cf.taste.hadoop.als.ParallelALSFactorizationJob; import org.apache.mahout.cf.taste.hadoop.als.RecommenderJob; public class Test { public static String baseDirectory = MainAlsRecommender.class.getResource("/reco").getPath(); public static String inputSplitDirectory = baseDirectory +"/ratings.csv"; public static String outputSplitDirectory = baseDirectory ; public static String inputAlsDirectory = baseDirectory +"/trainingSet/"; public static String outputAlsDirectory = baseDirectory +"/als/out"; public static String recommenderJobUserFeatures = baseDirectory +"/als/out/U/"; public static String recommenderJobItemFeatures = baseDirectory +"/als/out/M/"; public static String recommenderJobInput = baseDirectory +"/als/out/userRatings/"; public static String recommenderJobOutput = baseDirectory +"/recommendations/"; public static String similarityMatrixDirectory = baseDirectory +"/similarityMatrix"; public static String tmpDirectory = baseDirectory +"/tmp"; public static String similarityClassname = "SIMILARITY_COSINE"; public static void main(String[] args) throws Exception { Configuration config = new Configuration(); DatasetSplitter datasetSplitter = new DatasetSplitter(); String[] datasetSplitterArgs = {"--input", inputSplitDirectory, "--output", outputSplitDirectory, "--trainingPercentage", "0.9", "--probePercentage","0.1"}; datasetSplitter.setConf(config); datasetSplitter.run(datasetSplitterArgs); // ParallelALSFactorizationJob parallelALSFactorizationJob = new ParallelALSFactorizationJob(); String[] parallelAlsFactorisationArgs = {"--input", inputAlsDirectory, "--output", outputAlsDirectory, "--numFeatures", "20", "--numIterations","10","--lambda","0.065"}; parallelALSFactorizationJob.setConf(config); parallelALSFactorizationJob.run(parallelAlsFactorisationArgs); // Mahout’s recommendfactorized function will compute recommendations based on ratings matrix RecommenderJob recommenderJob = new RecommenderJob(); String[] recommenderJobArgs = {"--input", recommenderJobInput, "--output",recommenderJobOutput,"--userFeatures", recommenderJobUserFeatures , "--itemFeatures",recommenderJobItemFeatures, "--numRecommendations","6","--maxRating","5"}; recommenderJob.setConf(config); recommenderJob.run(recommenderJobArgs); } } ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Thanks you very much 2015-03-19 15:53 GMT+01:00 Pat Ferrel <p...@occamsmachete.com>: > I think that means you are using the wrong input to #4. It looks like you > are trying to evaluate the ALS recs then create a recommender? To use ALS > for recs try the CLI first see “mahout recommendfactorized” with input = > (userid, itemid, rating). If #4 is to create all recs for all known users > then it is independent of all other jobs since it takes interactions or > ratings as input. not the output f a previous job. > > > On Mar 19, 2015, at 7:11 AM, James Parker <evans.notc...@gmail.com> wrote: > > Hi, > I try ALS recommender using Java code. This is the steps i follow: > 1. I create DatasetSplitter Job > > 2. I create ParallelALSFactorizationJob Job > > 3. I create FactorizationEvaluator Job > > 4. I create RecommenderJob Job > > Everything is ok for 1 to 3. But when i run the RecommenderJob , i have > the following error > > ------------------------------------------------------------------------------------------------------------------------------- > java.lang.Exception: java.lang.RuntimeException: > java.lang.ClassCastException: > org.apache.mahout.math.map.OpenIntObjectHashMap cannot be cast to > org.apache.mahout.common.Pair > at > org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403) > . > . > > ---------------------------------------------------------------------------------------------------------------------------- > > > I'm suprised to see that if i run steps 1 to 3 using my java code, and the > last step using the command line "mahout recommendfactorized ........" > with the files generates with my java code steps 1 to 3), recommendations > are correctly generated. > > Thanks you very much > > Evans > >