Skip to main content
 首页 » 编程设计

python之索引错误 : index 201850347 is out of bounds for axis 0 with size 201837124 while using unstack operation for large dataset

2025年05月04日7freeliver54

我正在尝试为我的项目实现用户-用户协同过滤算法。下面的代码适用于非常小的数据集,但在 yelp 数据集(100 万用户 200k 产品)上运行它时,它在使用 unstack 的行上给出了索引错误。它可以正确读取和打印庞大的数据集,但不会对其进行拆分。输入是一个包含用户、产品和相关评级的数据集。输出必须是计算出的预测。

我在 stackoverflow 上发现了许多其他问题来解决这个问题,但它们与 Python 的 unstack 操作无关。我尝试了替代方案,例如不使用 unstack 并单独使用 groupby 进行所有操作,但这是不可行的。我不知道如何解决这个问题。

import pandas as pd; 
from math import *; 
 
df = pd.read_csv('preprocessed.csv', names    ['users','Products','stars'],low_memory=False) 
s = df.groupby(['users', 'Products']).sum() 
m = s.unstack(fill_value=0.0) 
print(m) 

输出:

stars 
Products product1 product2 product3 
users 
user1         1.0      0.0      4.0 
user2         1.0      3.0      0.0 
user3         1.0      0.0      0.0 
user4         0.0      0.0      3.0 
 
 
Predicted ratings 
     stars 
Products product1  product2  product3 
users 
user1         1.0  0.115504  4.000000 
user2         1.0  3.000000  1.489822 
user3         1.0  0.478533  0.521467 
user4         1.5  0.500000  3.000000 

请您参考如下方法:

当我拆开一个大的 groupby 系列时,我遇到了和你一样的问题。问题来自没有足够的内存。因此,最好的解决方案是使用更大的 RAM 机器来运行您的计算。