Table_2: Users’shopping records at brick-and-mortar stores before Dec. 2015. (ijcai2016_koubei_train)
User_id、Merchant_id、Location_id 、Time_Stamp
Table_3: Merchant information. (ijcai2016_merchant_info)
Merchant_id 、Budget(budget constraints imposed on the merchant) 、Location_id_list
Table_4: Prediction result. (ijcai2016_koubei_test)
User_id、Location_id、Merchant_id_list
首先统计出下面几个字典:
{用户:[商家]}
{商家:[用户]}
{商家:商家热度} (热度用用户访问次数来表示)
{商圈:{商家:商家热度}} (方便后面的推荐)
商家间的相似度矩阵(其实是存储在字典中)
1、对于某用户,若其所在商圈内商家少于10个,则全部推荐,并且按照商家热度从高到低排序。
2、冷启动问题,若该用户之前没有使用过口碑,即没有历史商家记录,则推荐所在商圈热门的前十个商家(需排序)。
3、如果有历史商家记录,分别对消费过的商家找到相似商家和相似度,对于所有消费过的商家设置等权,累计同一商家的相似度,按照相似度从大到小排序,推荐前十个。
# -*- coding:utf-8 -*-
__author__ = 'Bai'
import os,math,csv
os.chdir('c:/Bai/datasets/tianchi_ijcai2016')
f1 = open('ijcai2016_merchant_info')
context1 = f1.readlines()
f2 = open('ijcai2016_koubei_train')
context2 = f2.readlines()
f3 = open('ijcai2016_koubei_test')
context3 = f3.readlines()
csvfile = file('forcast.csv','wb')
writer = csv.writer(csvfile)
#统计字典: {用户:[商家]}、{商家:[用户]} 及 {商家:商家热度}
user_merchant = {}
merchant_user = {}
merchant_popular = {}
for x in context2:
x = x.replace('\n','').split(',')
if x[0]