Skip to content

Instantly share code, notes, and snippets.

@dchapsky
Forked from jonathana/grouplens_evaluator.py
Created June 5, 2012 21:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dchapsky/2878249 to your computer and use it in GitHub Desktop.
Save dchapsky/2878249 to your computer and use it in GitHub Desktop.
"Mahout in Action" Grouplens evaluator sample from section 2.5 ported to jython
import sys, os, glob
from datetime import datetime
sys.path.append(os.environ.get("MAHOUT_CORE"))
for jar in glob.glob(os.environ.get("MAHOUT_JAR_DIR") + "/*.jar"):
sys.path.append(jar)
from org.apache.mahout.common import RandomUtils
from org.apache.mahout.cf.taste.common import TasteException
from org.apache.mahout.cf.taste.eval import *
from org.apache.mahout.cf.taste.impl.eval import *
from org.apache.mahout.cf.taste.impl.model.file import *
from org.apache.mahout.cf.taste.impl.neighborhood import *
from org.apache.mahout.cf.taste.impl.recommender import GenericUserBasedRecommender
from org.apache.mahout.cf.taste.impl.recommender.slopeone import SlopeOneRecommender
from org.apache.mahout.cf.taste.impl.similarity import *
from org.apache.mahout.cf.taste.model import *
from org.apache.mahout.cf.taste.neighborhood import *
from org.apache.mahout.cf.taste.recommender import *
from org.apache.mahout.cf.taste.similarity import *
from java.io import *
from java.util import *
class GenericRecommenderBuilder(RecommenderBuilder):
def __init__(self):
pass
def buildRecommender(self, model):
similarity = PearsonCorrelationSimilarity(model)
neighborhood = NearestNUserNeighborhood(2, similarity, model)
return GenericUserBasedRecommender(model, neighborhood, similarity)
class SlopeOneRecommenderBuilder(RecommenderBuilder):
def __init__(self):
pass
def buildRecommender(self, model):
similarity = PearsonCorrelationSimilarity(model)
neighborhood = NearestNUserNeighborhood(2, similarity, model)
return SlopeOneRecommender(model)
def main():
RandomUtils.useTestSeed()
model = FileDataModel(File(sys.argv[1]))
builder = GenericRecommenderBuilder()
print 'Starting run at %s' % datetime.now()
for builder in [GenericRecommenderBuilder(), SlopeOneRecommenderBuilder()]:
print 'Starting evaluations of recommender created using %s at %s...' % (builder, datetime.now())
for evaluator in [AverageAbsoluteDifferenceRecommenderEvaluator(), RMSRecommenderEvaluator()]:
print 'Evaluating recommender using %s at %s...' % (evaluator, datetime.now())
score = evaluator.evaluate(builder, None, model, 0.7, 1.0)
print 'Score evaluated by %s=%.2f' % (evaluator, score)
print 'Ending run at %s' % datetime.now()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment