Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from http import HTTPStatus
from backend.models import db
from flask import json, render_template, request, redirect, Blueprint, Response
from ..models.UserCityModel import UserCityModel
from ..models.DestinationModel import DestinationModel
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__))+ "/../../src/")
from algorithms.CosineSimilarityWithSimilarityCoefficient import CosineSimilarityWithSimilarityCoefficient
from algorithms.CosineSimilarity import CosineSimilarity
from algorithms.CollaborativeFiltering import CollaborativeFiltering
from algorithms.RandomSimilarity import RandomSimilarity
recommendationsBlueprint = Blueprint(
'recommendations', __name__, url_prefix='')
@recommendationsBlueprint.route('/recommend/results', methods=['POST'])
def recommendationsResults():
cities = request.form.getlist("city_name")
result = DestinationModel.query.all()
available_cities = [str(r).split(" ")[1].split(">")[0] for r in result]
for c in cities:
if c not in available_cities:
cities.remove(c)
cosine = CosineSimilarity()
cosine_sim = CosineSimilarityWithSimilarityCoefficient()
collab = CollaborativeFiltering()
random = RandomSimilarity()
if len(cities) != 0:
recommendations = {
"Cos Raw data": cosine.similarity_on_raw_data(cities),
"Cos Imputed data": cosine.similarity_on_imputed_data(cities),
"Cos Binned features": cosine.similarity_on_binned_data(cities),
"SVD": collab.similarity_with_SVD(cities),
"Random": random.random_similarity(cities),
"CosSim Raw data": cosine_sim.similarity_on_raw_data(cities),
"CosSim Imputed data": cosine_sim.similarity_on_imputed_data(cities),
"CosSim Binned features": cosine_sim.similarity_on_binned_data(cities),
}
else:
recommendations = {}
return render_template("recommend.html", results=recommendations, cities=cities)