Hmm, still happening. I have a 220k line file with user, item and pref value. I am still getting the NaN error when evaluating. I'm not sure what to do. It also takes a long time for this error to popup, around 1 hour. I hate to throw code out like this, but maybe it'll be help someone... help me. Is it related to the evaluator settings?
- Matt (def prefs-file "data.txt") (org.apache.mahout.common.RandomUtils/useTestSeed) (let [model (FileDataModel. (File. prefs-file)) evaluator (GenericRecommenderIRStatsEvaluator.) rbuilder (reify RecommenderBuilder (buildRecommender [this model] (let [sim (LogLikelihoodSimilarity. model)] (GenericBooleanPrefItemBasedRecommender. model sim)))) mbuilder (reify DataModelBuilder (buildDataModel [this training-data] (GenericBooleanPrefDataModel. (GenericBooleanPrefDataModel/toDataMap training-data))))] (prn (.evaluate evaluator rbuilder mbuilder model nil 10 GenericRecommenderIRStatsEvaluator/CHOOSE_THRESHOLD 0.01))) On Sat, Jul 7, 2012 at 11:20 AM, Matt Mitchell <goodie...@gmail.com> wrote: > Thanks Sean, you're absolutely right. Things are working nicely now. > > - Matt > > On Sat, Jul 7, 2012 at 3:48 AM, Sean Owen <sro...@gmail.com> wrote: >> What it really means is that there is not enough data to make a >> meaningful test here. >> >> On Sat, Jul 7, 2012 at 1:28 AM, Matt Mitchell <goodie...@gmail.com> wrote: >>> Hi, >>> >>> I have a recommender, with a boolean prefs model. I am following the >>> instructions in the MIA book, but only get this exception: >>> >>> Illegal precision: NaN >>> [Thrown class java.lang.IllegalArgumentException] >>> >>> Restarts: >>> 0: [QUIT] Quit to the SLIME top level >>> >>> Backtrace: >>> 0: >>> com.google.common.base.Preconditions.checkArgument(Preconditions.java:88) >>> 1: >>> org.apache.mahout.cf.taste.impl.eval.IRStatisticsImpl.<init>(IRStatisticsImpl.java:35) >>> 2: >>> org.apache.mahout.cf.taste.impl.eval.GenericRecommenderIRStatsEvaluator.evaluate(GenericRecommenderIRStatsEvaluator.java:212) >>> >>> The code is written in Clojure, I hope that's OK: >>> >>> (let [model (GenericBooleanPrefDataModel. >>> (GenericBooleanPrefDataModel/toDataMap >>> (FileDataModel. (File. "resources/test.data")))) >>> evaluator (GenericRecommenderIRStatsEvaluator.) >>> rbuilder (reify RecommenderBuilder >>> (buildRecommender [this model] >>> (let [sim (LogLikelihoodSimilarity. model) >>> nhood (NearestNUserNeighborhood. 10 sim model)] >>> (GenericBooleanPrefUserBasedRecommender. model >>> nhood sim)))) >>> mbuilder (reify DataModelBuilder >>> (buildDataModel [this training-data] >>> (GenericBooleanPrefDataModel. >>> (GenericBooleanPrefDataModel/toDataMap >>> training-data))))] >>> (.evaluate evaluator rbuilder mbuilder model nil 10 >>> GenericRecommenderIRStatsEvaluator/CHOOSE_THRESHOLD >>> 1.0)) >>> >>> My test data file is very simple (for now): >>> >>> 1,1 >>> 1,2 >>> 1,3 >>> >>> 2,1 >>> 2,10 >>> 2,100 >>> 2,20 >>> >>> 3,9 >>> 3,10 >>> 3,20 >>> 3,1 >>> >>> 4,10 >>> 4,15 >>> 4,1 >>> >>> Any idea what I might be doing wrong? >>> >>> Thanks in advance, >>> >>> - Matt