# -*- encoding='utf-8-sig' -*-
import numpy as np
from recommendations.models import Restaurant
import pandas as pd
import scipy
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
from sklearn.feature_extraction import DictVectorizer
from sklearn.cluster import KMeans
from sklearn.metrics.pairwise import euclidean_distances
def find_rating(nearby_rid, cuisine):
print("I am starting to find rating algo")
#print nearby_rid
# First read csv files and store it in dataframe
# Second convert dataframe to array
df_restaurant = pd.read_csv('data/restaurant.csv', header=0)
array_restaurant = df_restaurant.values
#print array_restaurant
df_cuisine = pd.read_csv('data/cuisine.csv', header=0)
array_cuisine = df_cuisine.values
# # Perform natural join on cuisine and restaurant based on key 'rid' and store it in dataframe
# # convert that dataframe into an array
# combine = df_cuisine.set_index('rid').join(df_restaurant.set_index('id'))
# array_combine = combine.values
# #print array_combine
#---------------------------------------------------------------------------
# Select only those restaurant from all which are nearby
# Convert 2d numpy array to 1d array. For eg. [[1, 2, 3]] into [1, 2, 3]
nearby_rid = nearby_rid.ravel()
filter_nearby = df_restaurant.loc[df_restaurant['id'].isin(nearby_rid)]
array_filter_nearby = filter_nearby.values
#print array_filter_nearby
filter_cuisine_id = array_cuisine[array_cuisine[:,2] == 'Italian']
#print "I WANT THISSSSSSSSSS"
#print filter_cuisine_id
filter_cuisine_id = filter_cuisine_id[:,1]
#print filter_cuisine_id.astype(int)
filter_cuisine = filter_nearby.loc[filter_nearby['id'].isin(filter_cuisine_id.astype(int))]
print(filter_cuisine)
filter_cuisine = filter_cuisine.values
#---------------------------------------------------------------------------
# Extract latitude and longitude of above filtered restaurant
lat_long = filter_cuisine[:,2:4]
#print lat_long
# Apply clustering algo on filtered restaurant data
kmeans = KMeans(n_clusters=3, random_state=0).fit(lat_long)
# Cluster number for all the above filtered restaurant in which cluster they fall
print(kmeans.labels_)
#print kmeans.predict([[18.95618666,72.81199761], [18.99120402, 72.81458057]])
print("Clustering centre")
print(kmeans.cluster_centers_)
#----------------------------------------------------------------------------
# calculate distance of each cluster from user's current location
distance = euclidean_distances([[19.044497, 72.8204535]], kmeans.cluster_centers_)
print(np.transpose(distance))
print(len(distance))
# append cluster number with above distance array, for knowing which cluster distance is that
# because after we are sorting these distances
distance_cluster_centre = np.insert(np.transpose(distance), 1, np.array([0, 1, 2]), axis=1)
print(distance_cluster_centre)
# sorted distances
print("sorted distance")
arr = distance_cluster_centre[distance_cluster_centre[:,0].argsort()]
#------------------------------------------------------------------------------
# make numpy array with columns [id, lat, long, rating, cid]
# cid = cluster id
id_after_cuisine = filter_cuisine[:,0]
id_lat_long = np.insert(lat_long, 0, id_after_cuisine, axis=1)
id_lat_long_cid = np.insert(id_lat_long, 3, kmeans.labels_ , axis=1)
id_lat_long_rating_cid = np.insert(id_lat_long_cid, 3, filter_cuisine[:,8] , axis=1)
print(id_lat_long_rating_cid)
# convert above array to dataframe
columns=['id','latitude','longitude','rating','cid']
df = pd.DataFrame(id_lat_long_rating_cid ,columns=columns)
#-----------------------------------------------------------------------------------------------
# SORT CLUSTER ACCORDING TO CLUSTER CENTRE DISTANCES FROM USER'S LOCATION
# select [[12.313, 12.375843, 24.7364],[0, 2, 1]] - [[centre distances][cluster id]]
print(np.array(arr[:,1][0]))
#initialize empty dataframe
sorted_cluster = pd.DataFrame()
# sort cluster according to cluster centre distance
for i in range(0, len(arr[:,1])):
# dataframe of single cluster
single_cluster = df.loc[df['cid'].isin(np.array( arr[:,1][i] ).ravel())]
single_cluster = single_cluster.sort_values(by='rating', ascending=False)
sorted_cluster = sorted_cluster.append(single_cluster)
print(sorted_cluster)
#df_groupby = sorted_cluster.groupby('cid')
#print len(df_groupby)
#for group in df_groupby:
# print group
#print df_groupby.sort_values('rating', ascending=False)
#print df_groupby.get_group(0)
# convert dataframe to array and extract only rid
sorted_cluster_rid = sorted_cluster.as_matrix(columns=None)[:,0]
# convert long datatype of rid into int
return sorted_cluster_rid.astype(int)
#df_groupby = df.groupby('cid')
#print len(df_groupby)
#for group in df_groupby:
# print group
#print df_groupby.sort_values('rating', ascending=False)
#print df_groupby.get_group(0)
#--------------------------------------------------------------------------------------------------
# featureset_all = np.delete(filter_cuisine, np.s_[2:10], axis=1)
# print "CONVERT THIS ARRAY TO DATFRAMEEEEEEEEEEEEEE"
# print featureset_all
# #featureset_all = featureset_all[0:6,:]
# featureset_X = np.delete(featureset_all, np.s_[0], axis=1)
# print featureset_X
# featureset_Y = np.delete(featureset_all, np.s_[1:], axis=1)
# print featureset_Y
# columns=['cuisine','homedelivery','smoking','alcohol','wifi', 'valetparking','rooftop']
# df = pd.DataFrame(featureset_X ,columns=columns)
# print "CONVERTEDDDDDDDDDDDDDDDDDDD"
# print df
# cols_to_retain = ['cuisine', 'homedelivery', 'smoking', 'alcohol', 'wifi', 'valetparking', 'rooftop']
# #cols_to_retain = ['homedelivery', 'smoking', 'alcohol', 'wifi']
# feature = df[cols_to_retain].to_dict( orient = 'records' )
# print "DICTIONARYYYYYYYYY"
# print feature
# vec = DictVectorizer()
# X = vec.fit_transform(feature).toarray()
# print X
# columns=['id']
# df = pd.DataFrame(featureset_Y ,columns=columns)
# cols_to_retain = ['id']
# Y = df[cols_to_retain].to_dict( orient = 'records' )
# vec = DictVectorizer()
# Y = vec.fit_transform(Y).toarray()
# print Y
# X_train, X_test, Y_train_labels, Y_test_labels = train_test_split(X, Y, test_size=0.3, random_state=100)
# print "-----------Training feature---------------"
# print X_train
# print "------------Testing feature--------------"
# print X_test
# print "------------Training label--------------"
# print Y_train_labels
# print "-----------Testing label---------------"
# print Y_test_labels
# print "--------------------------"
# clf_entropy = DecisionTreeClassifier(criterion = "gini", random_state = 100, max_depth=3, min_samples_leaf=5)
# clf_entropy.fit(X_train, Y_train_labels)
# print "Fitting done"
# # Make predictions
# y_pred_en = clf_entropy.predict(X_test)
# print y_pred_en
# # columns=['cuisine','homedelivery','smoking','alcohol','wifi', 'valetparking','rooftop']
# # df = pd.DataFrame([['Italian', 'yes', 'no', 'yes', 'no', 'no', 'no'], ['Italian', 'yes', 'no', 'yes', 'no', 'no', 'no']] ,columns=columns)
# # cols_to_retain = ['cuisine', 'homedelivery', 'smoking', 'alcohol', 'wifi', 'valetparking', 'rooftop']
# # feature = df[cols_to_retain].to_dict( orient = 'records' )
# # print feature
# # vec = DictVectorizer()
# # user_input = vec.fit_transform(feature).toarray()
#
没有合适的资源?快使用搜索试试~ 我知道了~
拟议系统通过在旅游领域提供更具体的食物、酒店和旅游地点.zip
共74个文件
py:28个
pyc:27个
html:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 141 浏览量
2023-03-28
13:56:54
上传
评论
收藏 459KB ZIP 举报
温馨提示
•拟议系统通过在旅游领域提供更具体的食物、酒店和旅游地点推荐来增强用户体验,为用户提供各种选项,如基于时间、附近地点、基于评级、用户个性化建议等。M推荐方法:•附近推荐算法-KNN算法•...
资源推荐
资源详情
资源评论
收起资源包目录
•拟议系统通过在旅游领域提供更具体的食物、酒店和旅游地点推荐来增强用户体验,为用户提供各种选项,如基于时间、附近地点、基于评级、用户个性化建议等。M推荐方法:•附近推荐算法-KNN算法•....zip (74个子文件)
Tourism-Recommendation-master
Tourism
db.sqlite3 948KB
load_restaurant.py 2KB
load_cuisinetiming.py 1KB
load_timing.py 1KB
recommendations
__init__.py 0B
tests.py 60B
admin.py 2KB
migrations
__init__.py 0B
0001_initial.py 1KB
0002_auto_20180324_2313.py 3KB
__pycache__
0002_auto_20180324_2313.cpython-36.pyc 2KB
0001_initial.cpython-36.pyc 1KB
__init__.cpython-36.pyc 143B
apps.py 105B
models.py 2KB
urls.py 1KB
restaurant
__init__.py 0B
nearby.pyc 1KB
rating_algo.py 8KB
nearby.py 2KB
user_personalized.pyc 3KB
timing_algo.py 7KB
__init__.pyc 159B
timing_algo.pyc 4KB
forms.pyc 588B
rating_algo.pyc 3KB
price_algo.pyc 3KB
__pycache__
timing_algo.cpython-36.pyc 3KB
price_algo.cpython-36.pyc 2KB
forms.cpython-36.pyc 471B
nearby.cpython-36.pyc 1007B
user_personalized.cpython-36.pyc 3KB
__init__.cpython-36.pyc 153B
rating_algo.cpython-36.pyc 2KB
price_algo.py 5KB
user_personalized.py 4KB
forms.py 151B
__pycache__
urls.cpython-36.pyc 757B
admin.cpython-36.pyc 2KB
forms.cpython-36.pyc 1KB
views.cpython-36.pyc 5KB
__init__.cpython-36.pyc 132B
models.cpython-36.pyc 2KB
views.py 7KB
forms.py 1KB
data
number.csv 30KB
timing_cuisine.csv 5KB
timing.csv 331KB
reviews.csv 66KB
cuisine.csv 63KB
restaurant.csv 169KB
payment.csv 39KB
templates
explore.html 751B
add_survey.html 703B
home.html 984B
registration
login.html 203B
base.html 4KB
restaurant
restaurant_detail.html 608B
recommendation_list.html 1KB
input_cuisine.html 861B
timing_list.html 1KB
foodform.html 135B
signup.html 526B
manage.py 539B
Tourism
__init__.py 0B
wsgi.py 391B
urls.py 1KB
settings.py 3KB
__pycache__
urls.cpython-36.pyc 1KB
settings.cpython-36.pyc 2KB
__init__.cpython-36.pyc 124B
wsgi.cpython-36.pyc 527B
load_cuisine.py 1KB
load_payment.py 1KB
共 74 条
- 1
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9154
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功