gpt4 book ai didi

python - 索引超出迭代范围

转载 作者:行者123 更新时间:2023-12-01 09:17:10 32 4
gpt4 key购买 nike

我有一个像这样的数据框:

user_id anime_id    user_rating
0 1 20 7.808497
1 3 20 8.000000
2 5 20 6.000000
3 6 20 7.808497
4 10 20 7.808497

它看起来像是使用推荐系统的基本数据框。

我有大约 700 万行,我减少了一点数据帧:

df = df[df["user_id"] < 2000]

让我们打印 n_users、n_items,当然我有 1999 个用户,还有 ~6000 个项目

我有两个问题。如果我想像这样构建我的训练数据集:

ratings = np.zeros((n_users, n_items))
for row in df.itertuples():
ratings[row[1]-1, row[2]-1] = row[3]

我有一个`IndexError:

index 950 is out of bounds for axis 0 with size 949`

我在评论后尝试了 row[0] 的新功能,但它不起作用:

X = urm[["user_id", "anime_id"]].as_matrix()
y = urm["user_rating"].values
n_u = len(urm["user_id"].unique())
n_m = len(urm["anime_id"].unique())

R = np.zeros((n_u, n_m))
for idx, row in enumerate(X):
R[row[0]-1, row[1]-1] = y[idx]

仍然是相同的 IndexError。

如果我在 R.index 中传递带有 if row 的行:代码仅返回 np.zeros 矩阵

最佳答案

row[1]代表user_id ,而不是您的数据帧索引。一旦您到达 user_id 的行大于 ratings 的第一个维度,您将看到 IndexError 。相反,使用 row[0]row.Index提取行索引,然后您可以使用它来索引 ratings数组。

此外,请注意 df[df["user_id"] < 2000]其本身并不能保证您拥有 1999 个用户。例如一些user_id整数标识符可能丢失。

关于python - 索引超出迭代范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139788/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com