cfm代码大全,cf代码查询

前面我们简单介绍了基于内容的推荐系统CB和基于协同过滤的推荐系统CF,让我们看一下CF的一些实际例子。

让我们看一下元数据。数据很简单:userId(用户ID)、itemId(商品ID)、score(用户得分),用\’,\’分隔。

计算时,使用以下相似度计算公式。这个公式其实和cos相似度的公式是一样的。

在:

Wi,j 表示标记为i 和j 的两个项目的相似度

U(i,j) 表示同时评估i 和j 的用户集合

ruj 表示用户u 对项目i 的评分

是平滑参数

事实上,使用这个你可以将分子和分母乘法的后半部分作为常数丢弃,并且不会影响结果。那么计算的时候只能看到前半部分。分析表明,每个用户的分母相同,是i的所有用户得分的平方和乘以所有用户的得分。对于j i 的评估的平方和,分子是i 和j 的乘积。如果我们将分母分开,我们可以看到它实际上是所有用户评分的平方和除以i。将所有用户对i 的评分平方和(相当于统一标准化)乘以您对i 的评分,再乘以对i 的所有用户评分的平方和。由此看来,代码的实现就非常容易了。

这是一个简单的例子来解释如何应用这个公式。

假设我们要计算item1 和item2 之间的相似度。现在我们已经知道了同时对两个项目进行评分的所有用户A、B 和C 的相似度计算过程。首先,我们对分数进行标准化并求出平方和:所有用户对item1 的评分为2^2+1^2+4^2=20,所有用户对item2 的评分平方和为5^2+3^2+2^2=38 。将所有分数归一化、相乘、求和,最终相似度为:

所以我们首先对所有分数进行归一化,然后找到i 和j 的所有分数的集合并计算i 和j 之间的相似度。

下面是基于这个思想的代码实现。此代码是用Python 编写的MapReduce 任务。

标准化和成对匹配过程map1.py#! /usr/bin/env python # -*-coding: utf-8 -*-import sysimport math item_score_dic={}user_item_score_list=[]for line in stdin: ss=line .strip( ) .split(\’,\’) if len(ss) !=3: 继续user=ss[0].strip() item=ss[1].strip() 分数=float(ss[ 2].strip ()) user_item_score_list .append((user,item,score)) 分数=pow(score,2) if item_score_dic.has_key(item): item_score_dic[item] +=分数else: item_score_dic[item]=user_item_score_list: UI 分数user, item, Score=uis if item_score_dic.has_key(item): Score_sqr=math.sqrt(item_score_dic[item]) print (\’\\t\’.join([user,item,score/score_sqr]))reduce1.py

#! /usr/bin/env python# -*-coding: utf-8 -*-import sys current_user=Noneitem_score_list=[] sys.stdin: line ss=line.strip().split(\’\\t\’ ) if len ( ss) !=3: 继续user=ss[0].strip() item=ss[1].strip() 分数=float(ss[2].strip()) 如果不是current_user: current_user=user 如果current_user !=user:对于i 在范围内(0,len(item_score_list) – 1): 对于j 在范围(i + 1,len(item_score_list)): item_a,score_a=item_score_list [i] item_b,score_b=item_score_list [j] print(\’ \\ t\’.join([item_a, item_b, Score_a * Score_b])) print(\’\\t\’.join([item_b, item_a, Score_a * Score_b])) item_score_list=[] current_user=用户item_score_list 附加((item, Score)) for i in range(0, len(item_score_list) – 1): for j in range(i + 1, len(item_score_list)): item_a, Score_a=item_score_list[ i] item_b, Score_b=item_score_list[j] 打印(\’\\t\’.join([item_a, item_b, Score_a * Score_b])) print(\’\\t\’.join([item_b, item_a, Score_a * Score_b])) item1 和item2 相似配对map2 的总相位.py#! /usr/bin/env python# -*-coding: utf-8 -*-import sys for line in sys .stdin: ss=line.strip().split(\’\\t\’) if len(ss) !=3: 继续item_a=ss[0].strip() item_b=ss[1].strip() Score=ss[ 2].strip() print(\’%s#%s\\t%% item_a, item_b,分数)reduce2.py

#! /usr/bin/env python# -*-coding: utf-8 -*-import sys current_items=Nonesum=0.0 for line in sys.stdin: ss=line.strip().split(\’\\t\’) if len (ss) !=2: 继续item_item=ss[0].strip() 分数=float(ss[1].strip()) if current_items: current_items=item_item if current_items !=item_item: item_a, item_b=current_items.split (\’ # \’) print(\’\\t\’.join(item_a, item_b, sum)) sum=0.0 current_items=item_item sum +=得分item_a, item_b=current_items.split(\’#\’)print(\’\\t\’ .join( item_a , item_b, sum)) 以上是该算法的代码实现过程。该算法的一个缺点是当数据量非常大时,项目对的数量变得非常大。由于很容易耗尽内存,因此实际应用需要随机选择一定量的数据进行计算,而不是将所有数据添加到计算中。如果您觉得有用,请推荐给您的朋友并分享。 “努力提升自己。”

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/664257.html

(0)
上一篇 2024年6月3日
下一篇 2024年6月3日

相关推荐

  • 和平精英新赛季如何改名加符号?

    和平精英新赛季如何改名加符号? 和平精英新赛季改名加符号的方法: 1、进入游戏之后点击下方的仓库; 2、然后点击右下角的道具; 3、找到改名卡,点击使用; 4、然后将想要增加的特殊符号输入进去,最后点击确认就好了。 和平精英改名怎么加符号? 1.玩家们要有改名卡,改名卡通过参加活动或者商城购买。 2.在输入法中输入十二星座符号,没有找到可以在下面的符号中复制…

    游戏快讯 4小时前
  • 和平精英扭蛋币怎么获得?

    和平精英扭蛋币怎么获得? 和平精英扭蛋币获得方法: 1.在活动的期间玩家们完成指定的任务之后就可以在好友送扭蛋的消息中领取扭蛋币了。 2.每个玩家每天最多可以通过好友消息获得6次,同一个好友一天只能领取一次。 和平精英扭蛋机抽取技巧? 没有特定的抽取技巧。因为和平精英的扭蛋机是完全随机的,没有任何预测和操控的方法。每次抽取都是独立的,前一次抽到好的物品并不能…

    游戏快讯 6小时前
  • 和平精英仰拍怎么拍? 和平精英自定义房间拍视频如何拍?

    和平精英仰拍怎么拍? 回答如下:要拍出好的和平精英仰拍,需要注意以下几点: 1.选择合适的角度:仰拍的角度通常比较低,可以让人物或场景显得更加壮观、震撼。但是,角度过低也容易使人物变形或失真,所以需要根据场景和人物来选择合适的角度。 2.注意光线:光线对拍摄效果影响很大,如果光线不好,仰拍的画面很容易出现暗角或过曝。所以,在选择拍摄角度时,要注意光线的方向和…

    游戏快讯 9小时前
  • 和平精英吹泡泡动作怎么得?

    和平精英吹泡泡动作怎么得? 可以使用物资币获取,一共需要60个,当然若是没有物资币可以使用点劵获取,一共需要600点劵 和平精英嗨起来动作怎么得? 1. 首先嗨起来动作获得前提是你必须有300赛季积分才可以兑换,下面是具体兑换步骤,如图所示: 打开和平精英,进入页面后点击右边的手册 2. 进入页面后,点击上面的兑换 3. 进入页面后,点击右下角的兑换商店 4…

    游戏快讯 10小时前
  • 头条号如何赚钱? 运营头条号如何赚钱?

    头条号如何赚钱? 今日头条赚钱方式如下 1、头条广告分成 你发表的作品获得平台广告,一万人读1-3元左右,开通原创的收益就更多了,一万人读10元左右。但是这个单价不是固定的,会有变动。 2、头条开通小店 具备相应经营资格的个人和企业可以申请开店,通过后可以自主销售商品获利,也可以流通商品获得佣金。 3、头条赞赏功能 优秀的用户可以打开赞扬功能。就像微信公众号…

    游戏快讯 11小时前