基于流行度的推荐-餐馆推荐

推荐系统的类型有很多, 其中基于流行度的推荐最为简单,在日常生活中应用也比较多,比如某一地方餐馆的菜品等推荐。

下面我们应用UCI机器学习数据集,建立基于流行度的餐馆推荐模型。

数据集来源于UCI Restaurant consumer data

首先,我们需要导入我们需要的数据分析包

导入数据分析包

1
2
import pandas as pd
import numpy as np

探索数据

将数据读取到pandasDataFrame中,

1
2
frame = pd.read_csv("ratings_final.csv") #数据集放在脚本的同目录
cuisine = pd.read_csv("chefmozcuisine.csv") #同上

查看两个数据的基本情况:

1
frame.head()























































userID placeID rating food_rating service_rating
0 U1077 135085 2 2 2
1 U1077 135038 2 2 1
2 U1077 132825 2 2 2
3 U1077 135060 1 2 2
4 U1068 135104 1 1 2

1
cuisine.head()





































placeID Rcuisine
0 135110 Spanish
1 135109 Italian
2 135107 Latin_American
3 135106 Mexican
4 135105 Fast_Food

基于流行度的推荐模型

将餐馆按照placeID分组,对评价数排序。

1
2
3
rating_count = pd.DataFrame(frame.groupby('placeID')['rating'].count())

rating_count.sort_values('rating', ascending=False).head()



































rating
placeID
135085 36
132825 32
135032 28
135052 25
132834 25

找出评价数前五的餐馆,并且与菜品对应

1
2
3
4
most_rated_places = pd.DataFrame([135085, 132825, 135032, 135052, 132834], index=np.arange(5), columns=['placeID'])

summary = pd.merge(most_rated_places, cuisine, on='placeID')
summary















































placeID Rcuisine
0 135085 Fast_Food
1 132825 Mexican
2 135032 Cafeteria
3 135032 Contemporary
4 135052 Bar
5 135052 Bar_Pub_Brewery
6 132834 Mexican

对于包含Rcuisine的统计

1
cuisine['Rcuisine'].describe()
unique         59
top       Mexican
freq          239
Name: Rcuisine, dtype: object

最后,我们找到了比较受欢迎的相应参观的对应菜品。

这就是基于流行度的菜品推荐。

感谢您的时间,有问题请联系我。

Sumer Zhang wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客。