#, ['Halcyondays' , 'Caldera Ginger Beer', 4.0]] #testQueries = [['stcules', 'English Strong Ale',3.0]] actualToPredictedRating = [] for query in testQueries : testCustomer = query[0] testProduct = query[1] actualRating = query[2] print "****************************************" print "Test Query ", query #Step 1 : Find Similar customers for this customer print "Finding similar customers for : ", testCustomer similarCustomers = knnc.findSimilarCustomers(testCustomer, availableCustomerRows, availableBeerColumns); #Step 2 : Fnd all the beers which are similar to this one. print "Finding similar beers for : ", testProduct #similarBeers = kv.findSimiarityInParallel(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) similarBeers = kv.findSimiarity(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) #Step 3 : Predict rating for this query filteredRating = 0 overallRating = 0 try : #BeerName - 'Heavy Handed IPA' model = PredictionModel(testCustomer, similarCustomers, similarBeers, availableBeerColumns, availableCustomerRows) #Next for each of those products find the common reviewers.
#testQueries = [['stcules', 'English Strong Ale',3.0]] actualToPredictedRating = [] for query in testQueries: testCustomer = query[0] testProduct = query[1] actualRating = query[2] print "****************************************" print "Test Query ", query #Step 1 : Find Similar customers for this customer print "Finding similar customers for : ", testCustomer similarCustomers = knnc.findSimilarCustomers(testCustomer, availableCustomerRows, availableBeerColumns) #Step 2 : Fnd all the beers which are similar to this one. print "Finding similar beers for : ", testProduct #similarBeers = kv.findSimiarityInParallel(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) similarBeers = kv.findSimiarity(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) #Step 3 : Predict rating for this query filteredRating = 0 overallRating = 0 try: #BeerName - 'Heavy Handed IPA' model = PredictionModel(testCustomer, similarCustomers, similarBeers,
def findSimilarCustomers(customerId) : return knnc.findSimilarCustomers(customerId, availableCustomerRows, availableBeerColumns);
def processData(count, availableBeerColumns, availableCustomerRows, sumOfBeerRatingsOverall): MEAN_PRODUCT_RATING=round((sumOfBeerRatingsOverall/count), 1) print ("Mean Beer rating for any beer : ", MEAN_PRODUCT_RATING) print ("# of beers = ", len(availableBeerColumns)) print ("# of customers = ", len(availableCustomerRows)) #availableBeerColumns = csvLoader.getAvailableBeerColumns() #availableCustomerRows = csvLoader.getAvailableCustomerRows() #Demo - combined run #testQueries = [['rawthar' , 'Caldera Ginger Beer', 4.0], ['Halcyondays' , 'Caldera Ginger Beer', 4.0],['rawthar' , 'Heavy Handed IPA', 4.0] ] #Demo - quick run testQueries = [['hopdog' , 'Iron Hill Northern English Brown Ale', 3.0]] #Demo - large data #testQueries = [['rawthar' , 'Heavy Handed IPA', 4.0]] #, ['Halcyondays' , 'Caldera Ginger Beer', 4.0]] #testQueries = [['stcules', 'English Strong Ale',3.0]] actualToPredictedRating = [] for query in testQueries : testCustomer = query[0] testProduct = query[1] actualRating = query[2] print ("****************************************") print ("Test Query ", query) #Step 1 : Find Similar customers for this customer print ("Finding similar customers for : ", testCustomer) similarCustomers = knnc.findSimilarCustomers(testCustomer, availableCustomerRows, availableBeerColumns); print ("SIMILAR Customers *****", len(similarCustomers)) #Step 2 : Fnd all the beers which are similar to this one. print ("Finding similar beers for : ", testProduct) similarBeers = kv.findSimiarityInParallel(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) #similarBeers = kv.findSimiarity(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) #print ("SIMILAR ONES *****", similarBeers[0]) #Step 3 : Predict rating for this query filteredRating = 0 overallRating = 0 try : #BeerName - 'Heavy Handed IPA' model = PredictionModel(testCustomer, similarCustomers, similarBeers, availableBeerColumns, availableCustomerRows) #Next for each of those products find the common reviewers. print ("Finding Global BaseLine rating...") baselineRating = model.computeGlobalBaseline(testProduct) print ("Global BaseLine rating : ", baselineRating) #Compute rating by Collaborative filtering. print ("Finding filtered rating...") filteredRating = model.computeFilteredRatingEstimate(testProduct) #Now get the average overall rating for k,v in filteredRating.items(): #print "rating for : ", k, " is " , v overallRating += v; if len(filteredRating) == 0 : print ("Cannot predict overall rating, as filtered rating is zero!"); break overallRating = (overallRating / len(filteredRating)) print ("Overall Rating : ", overallRating) print ("****************************************") actualToPredictedRating.append([actualRating] + [overallRating]) except Exception as e: print (e) pass return actualToPredictedRating
def processData(count, availableBeerColumns, availableCustomerRows, sumOfBeerRatingsOverall): MEAN_PRODUCT_RATING = round((sumOfBeerRatingsOverall / count), 1) print("Mean Beer rating for any beer : ", MEAN_PRODUCT_RATING) print("# of beers = ", len(availableBeerColumns)) print("# of customers = ", len(availableCustomerRows)) #availableBeerColumns = csvLoader.getAvailableBeerColumns() #availableCustomerRows = csvLoader.getAvailableCustomerRows() #Demo - combined run #testQueries = [['rawthar' , 'Caldera Ginger Beer', 4.0], ['Halcyondays' , 'Caldera Ginger Beer', 4.0],['rawthar' , 'Heavy Handed IPA', 4.0] ] #Demo - quick run testQueries = [['hopdog', 'Iron Hill Northern English Brown Ale', 3.0]] #Demo - large data #testQueries = [['rawthar' , 'Heavy Handed IPA', 4.0]] #, ['Halcyondays' , 'Caldera Ginger Beer', 4.0]] #testQueries = [['stcules', 'English Strong Ale',3.0]] actualToPredictedRating = [] for query in testQueries: testCustomer = query[0] testProduct = query[1] actualRating = query[2] print("****************************************") print("Test Query ", query) #Step 1 : Find Similar customers for this customer print("Finding similar customers for : ", testCustomer) similarCustomers = knnc.findSimilarCustomers(testCustomer, availableCustomerRows, availableBeerColumns) print("SIMILAR Customers *****", len(similarCustomers)) #Step 2 : Fnd all the beers which are similar to this one. print("Finding similar beers for : ", testProduct) similarBeers = kv.findSimiarityInParallel(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) #similarBeers = kv.findSimiarity(testProduct, availableBeerColumns, availableCustomerRows, FIELD_MAP) #print ("SIMILAR ONES *****", similarBeers[0]) #Step 3 : Predict rating for this query filteredRating = 0 overallRating = 0 try: #BeerName - 'Heavy Handed IPA' model = PredictionModel(testCustomer, similarCustomers, similarBeers, availableBeerColumns, availableCustomerRows) #Next for each of those products find the common reviewers. print("Finding Global BaseLine rating...") baselineRating = model.computeGlobalBaseline(testProduct) print("Global BaseLine rating : ", baselineRating) #Compute rating by Collaborative filtering. print("Finding filtered rating...") filteredRating = model.computeFilteredRatingEstimate(testProduct) #Now get the average overall rating for k, v in filteredRating.items(): #print "rating for : ", k, " is " , v overallRating += v if len(filteredRating) == 0: print( "Cannot predict overall rating, as filtered rating is zero!" ) break overallRating = (overallRating / len(filteredRating)) print("Overall Rating : ", overallRating) print("****************************************") actualToPredictedRating.append([actualRating] + [overallRating]) except Exception as e: print(e) pass return actualToPredictedRating