Movielens数据集 -用户物品评分矩阵

Movielens数据集 -用户物品评分矩阵转化

去[博客设置](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tcC5jc2RuLm5ldC9jb25zb2xlL2NvbmZpZ0Jsb2c?x-oss-process=image/format,png)页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 .

#代码实现

// An highlighted block
file = open("ratings.csv", 'r',
            encoding='UTF-8')  # 记得读取文件时加‘r’, encoding='UTF-8'
# 读取data.csv中每行中除了名字的数据
data = {}  # # 存放每位用户评论的电影和评分
for line in file.readlines()[1:100000]:
    # 注意这里不是readline()
    line = line.strip().split(',')
    # 如果字典中没有某位用户,则使用用户ID来创建这位用户
    if not line[0] in data.keys():
        data[line[0]] = {line[1]: line[2]}
    # 否则直接添加以该用户ID为key字典中
    else:
        data[line[0]][line[1]] = line[2]

df = pandas.DataFrame(data).T.fillna(0)
print(df)

#结果

在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是基于用户的协同过滤算法在Python中的实现代码,代码中使用了NumPy、Pandas、Scikit-learn等库来简化编写: ```python import pandas as pd import numpy as np from sklearn.metrics.pairwise import cosine_similarity # 读入数据集 ratings = pd.read_csv('ratings.csv') movies = pd.read_csv('movies.csv') # 合并数据集 data = pd.merge(ratings, movies, on='movieId') # 计算电影评分矩阵,行为用户,列为电影 rating_matrix = data.pivot_table(index='userId', columns='title', values='rating') # 填充缺失值 rating_matrix = rating_matrix.fillna(0) # 计算电影相似度矩阵 movie_similarity = cosine_similarity(rating_matrix.T) # 定义推荐函数 def recommend_movies(user_ratings, n): # 计算与用户评分最相似的N个电影 similar_movies = np.zeros(movie_similarity.shape[0]) for movie_id, rating in user_ratings: similar_movies += movie_similarity[movie_id] * rating similar_movies = list(enumerate(similar_movies)) similar_movies = sorted(similar_movies, key=lambda x:x[1], reverse=True)[:n] # 返回推荐电影的ID和评分 movie_indices = [i[0] for i in similar_movies] movie_scores = [i[1] for i in similar_movies] return movie_indices, movie_scores # 示例:推荐给用户ID为1,评分最高的10部电影 user_ratings = [(0, 5), (10, 4), (20, 3), (30, 2), (40, 1)] movie_indices, movie_scores = recommend_movies(user_ratings, 10) recommended_movies = movies.iloc[movie_indices][['title', 'genres']] recommended_movies['score'] = movie_scores print(recommended_movies) ``` 以上代码是基于用户的协同过滤算法在Python中的实现代码,其中使用了皮尔逊相关系数来计算用户相似度,使用了余弦相似度来计算电影相似度。推荐函数`recommend_movies`接受一个包含用户评分的元组列表和推荐电影的数量N作为输入,返回推荐电影的ID和评分
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值