# 在distance里我们使用的主要是基于用户的协同过滤,但是这样存在两个主要的问题
# 1.扩展性问题,随着用户量变多计算量也会增长,当上百万用户时扩展性就会成为一个问题
# 2.稀疏性,稀疏性,例如网上有上百万本书,用户评价过的只占一小部分,所以可能找不到最近邻居
# 因此,可以使用基于物品的过滤
# 调整余弦分布 减去了用户的平均评分
# consine(item1,item2) = 用户对item1,item2的乘积和/用户对item1,2平方和开根号相乘
# 基于物品的推荐把用户行为通过归一化的形式转换为了权重
#代码如下,写得不好的地方还需要改进
import pandas as pd
import numpy as np
path = 'E:\data\ml-latest-small'
# 9724部电影,id 1-170875
movies = pd.read_csv(path + '\movies.csv')
# 100835条打分记录
ratings = pd.read_csv(path + '\\ratings.csv')
# links = pd.read_csv(path + '\links.csv')
# tags = pd.read_csv(path + '\\tags.csv')
data = pd.merge(ratings, movies, on='movieId')
'''
data.nunique()
userId 610
movieId 9724