Esempio n. 1
0
def cross_valation(K,train_u_i_t,test_u_i,item_time,item_factor):
    day_count = 91
    #获取训练集的推荐列表
    M=3.5
    rec_user_item = usermodel.build_user_model(train_u_i_t,item_factor,day_count)
    
    #在这里进行一次测试,对用户的推荐列表,只推荐值大于某一限定的物品
    rec_user_item,former_rec = func.set_min_M(rec_user_item,M)
    #需要对推荐列表进行处理,对每个用户设定推荐的物品的个数,K为设定的物品的个数
    rec_user_item = func.set_rec_item_num(rec_user_item,K)
    #接下来想做的处理是,对冷启动用户,给其添加浏览过的热门商品(效果不好)
    #rec_user_item = func.cal_cold_start(rec_user_item,former_rec,item_time)
    #查看分布
    func.check_distribuction(rec_user_item)
    #计算准确率,召回率,F值等参数
    hit_user_item = func.cal_hit_user_item(rec_user_item,test_u_i) 
    precision,recall,F,hitbrand,pbrand,bbrand = func.cal_result(rec_user_item,test_u_i,hit_user_item)
    
    func.write(rec_user_item,'train_rec_user_item')
    func.write(hit_user_item,'hit_user_item')
    
    print '限定对每个用户推荐的物品数为:',K
    print 'hitbrand',hitbrand,'pbrand',pbrand,'precision',precision
    print 'hitbrand',hitbrand,'bbrand',bbrand,'recall',recall
    print 'F',F
Esempio n. 2
0
def func4():
    user_item_time,item_time,item_factor = func2()
    K = 20
    M=4
    day_count = 123
    
    rec_user_item = usermodel.build_user_model(user_item_time,item_factor,day_count)
    rec_user_item,former_rec = func.set_min_M(rec_user_item,M)
    rec_user_item = func.set_rec_item_num(rec_user_item,K)
    #查看为用户推荐物品的个数分布,对有那些推荐物品个数小于等于3的用户给其推荐热门商品
    #查看分布
    func.check_distribuction(rec_user_item)
    #rec_user_item=func.distribution(rec_user_item)
    func.write(rec_user_item,'rec_user_item')
    
    func.getresult(rec_user_item)