请用python写一个基于用户的协同过滤算法的音乐推荐系统
时间: 2023-06-11 13:08:33 浏览: 148
好的,下面是一份基于用户的协同过滤算法的音乐推荐系统的Python代码:
```python
import numpy as np
import pandas as pd
# 构造用户音乐评分矩阵
ratings = pd.read_csv('ratings.csv')
ratings_pivot = pd.pivot_table(ratings, values='rating', index='userId', columns='musicId').fillna(0)
# 计算用户相似度矩阵
user_similarity = np.dot(ratings_pivot, ratings_pivot.T)
# 构造推荐函数
def recommend_music(user_id, ratings_pivot, user_similarity):
user_ratings = ratings_pivot.loc[user_id].values
similar_users = user_similarity[user_id].argsort()[::-1][1:]
similar_ratings = ratings_pivot.iloc[similar_users].values
weighted_ratings = np.dot(user_similarity[user_id][similar_users], similar_ratings)
recommended_music = weighted_ratings.argsort()[::-1]
return recommended_music
# 使用推荐函数推荐音乐
user_id = 1
recommended_music = recommend_music(user_id, ratings_pivot, user_similarity)
print("Recommended music for User {}: {}".format(user_id, recommended_music[:10]))
```
以上代码中,我们首先从 `ratings.csv` 文件中读取用户音乐评分数据,并使用 Pandas 将其转化为用户音乐评分矩阵 `ratings_pivot`。
接着,我们计算用户相似度矩阵 `user_similarity`,其中相似度使用点积(dot product)计算。
最后,我们定义了一个推荐函数 `recommend_music`,它接受一个用户 ID、用户音乐评分矩阵和用户相似度矩阵作为输入,输出推荐给该用户的音乐。
我们使用用户相似度矩阵和推荐函数来为用户 `user_id` 推荐音乐,并输出前 10 个推荐结果。
阅读全文