Esempio n. 1
0
        public override long[] GetUserNeighborhood(long userID)
        {
            IDataModel      dataModel          = getDataModel();
            IUserSimilarity userSimilarityImpl = getUserSimilarity();

            TopItems.IEstimator <long> estimator = new Estimator(userSimilarityImpl, userID, minSimilarity);

            var userIDs = SamplinglongPrimitiveIterator.MaybeWrapIterator(dataModel.GetUserIDs(),
                                                                          getSamplingRate());

            return(TopItems.GetTopUsers(n, userIDs, null, estimator));
        }
        public override long[] GetUserNeighborhood(long userID)
        {
            IDataModel dataModel     = getDataModel();
            FastIDSet  neighborhood  = new FastIDSet();
            var        usersIterable = SamplinglongPrimitiveIterator.MaybeWrapIterator(dataModel
                                                                                       .GetUserIDs(), getSamplingRate());
            IUserSimilarity userSimilarityImpl = getUserSimilarity();

            while (usersIterable.MoveNext())
            {
                long otherUserID = usersIterable.Current;
                if (userID != otherUserID)
                {
                    double theSimilarity = userSimilarityImpl.UserSimilarity(userID, otherUserID);
                    if (!Double.IsNaN(theSimilarity) && theSimilarity >= threshold)
                    {
                        neighborhood.Add(otherUserID);
                    }
                }
            }

            return(neighborhood.ToArray());
        }
Esempio n. 3
0
        public static LoadStatistics runLoad(IRecommender recommender, int howMany)
        {
            IDataModel dataModel   = recommender.GetDataModel();
            int        numUsers    = dataModel.GetNumUsers();
            double     sampleRate  = 1000.0 / numUsers;
            var        userSampler =
                SamplinglongPrimitiveIterator.MaybeWrapIterator(dataModel.GetUserIDs(), sampleRate);

            if (userSampler.MoveNext())
            {
                recommender.Recommend(userSampler.Current, howMany); // Warm up
            }
            var callables = new List <Action>();

            while (userSampler.MoveNext())
            {
                callables.Add(new LoadCallable(recommender, userSampler.Current).call);
            }
            AtomicInteger            noEstimateCounter = new AtomicInteger();
            IRunningAverageAndStdDev timing            = new FullRunningAverageAndStdDev();

            AbstractDifferenceRecommenderEvaluator.execute(callables, noEstimateCounter, timing);
            return(new LoadStatistics(timing));
        }