推荐系统(1)-计算欧式距离分数

计算欧式距离分数

欧式距离分数:代表一种相似度指标,可以计算两个数据点之间的欧几里得距离

以电影推荐系统为例 代码如下:

# -*- coding:utf-8 -*-
'''
   计算欧式距离分数
'''
import json
import numpy as np

# 定义一个计算两个用户之间欧几里得距离的函数 user1和user2
def euclidean_score(dataset, user1, user2):
    if user1 not in dataset:
        raise TypeError('User'+user1+'not present in the dataset')
    if user2 not in dataset:
        raise TypeError('User'+user2+'not present in the dataset')
    # 提取两个用户均评过分的电影
    rated_by_both = {}
    for item in dataset[user1]:
        if item in dataset [user2]:
            rated_by_both[item]=1
    # 如果两个用户均没评分过,则得分为0
    if len(rated_by_both)==0:
        return 0
    # 计算平方和的平方根 并将其归一化 使得评分取值在0-1之间
    squared_difference = []
    for item in dataset[user1]:
        if item in dataset[user2]:
            squared_difference.append(np.square(dataset[user1][item]-dataset[user2][item]))
        return 1/(1+np.sqrt(np.sum(squared_difference)))
# 加载数据文件中的json格式文件
if __name__ == "__main__":
    data_file = 'movie_ratings.json'
    # 上下文管理器
    with open(data_file,'r') as f:
        data = json.loads(f.read())
# 假定两个随机用户,计算欧式距离分数
    user1='John Carson'
    user2='Michelle Peterson'
    print '\n欧几里得距离分数: '
    print euclidean_score(data,user1,user2)

输出结果如下:


欧几里得距离分数: 
1.0
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值