如何使用 panda 为推荐系统转换大型数据集?
How to pivot a large dataset for recommender system with panda?
我正在做一个有 300,000 个用户和 280,000 个项目的推荐系统,人们通常通过将数据框旋转成 table:
来做推荐系统
df.pivot_table(index='User-ID',columns='Item-ID',values='Rating')
但是不可能将如此庞大的数据集转换成 table。处理这个问题的常用方法是什么?或者人们使用其他结构来做推荐系统?
肯定有更好的方法来节省大量的计算和内存。我们创建的用户项矩阵通常是稀疏的并且包含大量零,这极大地增加了计算和内存的复杂性。
例如:
Per1 Per2 Per3 Per4 Per5 Per6 Per7 per8
Item1 5 0 1 0 0 0 0 0
Ttem2 0 3 0 0 2 0 0 0
此处矩阵中的零会增加计算量。
存储矩阵的更好方法是使用压缩稀疏行矩阵算法存储矩阵。它删除所有零值并仅存储非零值 values.Here 是为推荐系统创建 csr 矩阵的简单函数:-
def create_matrix(data, user_col, item_col, rating_col):
"""
creates the sparse user-item interaction matrix
Parameters
----------
data : DataFrame
implicit rating data
user_col : str
user column name
item_col : str
item column name
ratings_col : str
implicit rating column name
"""
# create a sparse matrix of using the (rating, (rows, cols)) format
rows = data[user_col].cat.codes
cols = data[item_col].cat.codes
rating = data[rating_col]
ratings = csr_matrix((rating, (rows, cols)))
ratings.eliminate_zeros()
return ratings, data
希望对您有所帮助!!!
我正在做一个有 300,000 个用户和 280,000 个项目的推荐系统,人们通常通过将数据框旋转成 table:
来做推荐系统df.pivot_table(index='User-ID',columns='Item-ID',values='Rating')
但是不可能将如此庞大的数据集转换成 table。处理这个问题的常用方法是什么?或者人们使用其他结构来做推荐系统?
肯定有更好的方法来节省大量的计算和内存。我们创建的用户项矩阵通常是稀疏的并且包含大量零,这极大地增加了计算和内存的复杂性。 例如:
Per1 Per2 Per3 Per4 Per5 Per6 Per7 per8
Item1 5 0 1 0 0 0 0 0
Ttem2 0 3 0 0 2 0 0 0
此处矩阵中的零会增加计算量。
存储矩阵的更好方法是使用压缩稀疏行矩阵算法存储矩阵。它删除所有零值并仅存储非零值 values.Here 是为推荐系统创建 csr 矩阵的简单函数:-
def create_matrix(data, user_col, item_col, rating_col):
"""
creates the sparse user-item interaction matrix
Parameters
----------
data : DataFrame
implicit rating data
user_col : str
user column name
item_col : str
item column name
ratings_col : str
implicit rating column name
"""
# create a sparse matrix of using the (rating, (rows, cols)) format
rows = data[user_col].cat.codes
cols = data[item_col].cat.codes
rating = data[rating_col]
ratings = csr_matrix((rating, (rows, cols)))
ratings.eliminate_zeros()
return ratings, data
希望对您有所帮助!!!