14.5 示例 餐馆菜肴推荐引擎 14.5.1 推荐未尝过的菜肴

2023-07-21 08:08:2115:47 140
声音简介


def standEst(dataMat,user,simMeas,item):
    """
    计算在给定相似度计算方法的前提下,用户对物品的估计评分值
    :param dataMat: 数据矩阵
    :param user: 用户编号
    :param simMeas: 相似性度量方法
    :param item: 物品编号
    :return:
    """
    #数据中行为用于,列为物品,n即为物品数目
    n=shape(dataMat)[1]
    simTotal=0.0
    ratSimTotal=0.0
    #用户的第j个物品
    for j in range(n):
        userRating=dataMat[user,j]
        if userRating==0:
            continue
        #寻找两个用户都评级的物品
        overLap=nonzero(logical_and(dataMat[:,item].A>0,dataMat[:,j].A>0))[0]


        if len(overLap)==0:
            similarity=0
        else:
            similarity=simMeas(dataMat[overLap,item],dataMat[overLap,j])


        simTotal+=similarity
        ratSimTotal+=simTotal*userRating



def recommend(dataMat,user,N=3,simMeas=cosSim,estMethod=standEst):
    """
    推荐引擎,会调用standEst()函数
    :param dataMat: 数据矩阵
    :param user: 用户编号
    :param N:前N个未评级物品预测评分值
    :param simMeas:
    :param estMethod:
    :return:
    """
    #寻找未评级的物品,nonzeros()[1]返回参数的某些为0的列的编号,dataMat中用户对某个商品的评价为0的列
    #矩阵名.A:将矩阵转化为array数组类型
    #nonzeros(a):返回数组a中不为0的元素的下标
    unratedItems=nonzero(dataMat[user,:].A==0)[1]
    if len(unratedItems)==0:
        return 'you rated everything!'
    itemScores=[]
    for item in unratedItems:
        estimatedScore=estMethod(dataMat,user,simMeas,item)
        itemScores.append((item,estimatedScore))
    return sorted(itemScores,key=lambda  jj:jj[1],reverse=True)[:N]

用户评论

表情0/300
喵,没有找到相关结果~
暂时没有评论,下载喜马拉雅与主播互动
猜你喜欢
单弦曲牌有声示例

供志扬小盆友和大家一起学习使用。说明:1)一个曲牌是否收录,主要看是否典型,近些年是否还有人还在舞台上演唱,即活体是否灭绝。2)一个收录的曲牌选择谁演唱的什么曲...

by:志扬小盆友

正聲之学诗词曲赋示例

正声之学:诗词曲赋示例!!二十一史弹词南乡子

by:归元境I松岩

午夜餐馆

都市传说,校园灵异,乡野诡事,民间怪谈,医院惊魂!好听上头的鬼故事,一魂上头,伴你入眠!喂给你的恐惧,就作为你的晚餐,侵蚀你藏匿于心里的灵异幻梦。也许这只是你从...

by:证无可证