基于svd梯度下降算法的协同过滤 """ import numpy as np import pandas as pd class SVDrecommend: # 电影id的列表 movie_list = [] # 用户id的列表 id_list = [] # 建模数据 values = [] # 构造函数 def __init__(self, userMovieScore, userMovieScoreDict):
时间: 2023-06-18 18:05:43 浏览: 92
在构造函数中,我们需要将用户对电影的评分数据进行处理和存储,以便后续使用。其中,userMovieScore是一个包含用户对电影评分的DataFrame,userMovieScoreDict是一个用户id到该用户评分数据的映射字典。具体实现如下:
```python
def __init__(self, userMovieScore, userMovieScoreDict):
# 获取电影id和用户id的列表
self.movie_list = list(userMovieScore.columns)
self.id_list = list(userMovieScore.index)
# 将评分数据转换为稀疏矩阵
self.values = np.zeros((len(self.id_list), len(self.movie_list)))
for i in range(len(self.id_list)):
for j in range(len(self.movie_list)):
if userMovieScore[self.movie_list[j]][self.id_list[i]] != 0:
self.values[i][j] = userMovieScore[self.movie_list[j]][self.id_list[i]]
# 存储用户评分数据的字典
self.userMovieScoreDict = userMovieScoreDict
```
在上述代码中,我们首先通过DataFrame的columns和index属性获取电影id和用户id的列表。然后,我们将评分数据转换为稀疏矩阵,其中,如果某个用户没有对某个电影评分,则相应的矩阵元素为0。最后,我们将用户评分数据存储在一个字典中,以便后续使用。
阅读全文