索引超出 iterrows 范围

index out of bound with iterrows

我收到错误 IndexError:索引 5105 超出尺寸为 5105 的轴 0 的范围 使用该代码我理解了问题但是如何解决它知道我使用 df.iterrows() ?

anime_edges = {}
for idx, row in interactions_from_selected_users_df.iterrows():
    similar_indices = anime_interactions[idx].argsort()[:-100:-1]
    similar_items = [(anime_interactions[idx][i], interactions_from_selected_users_df['anime_id'][i]) for i in similar_indices]
    anime_edges[row['anime_id']] = similar_items[:20]

此代码的主要目的是创建一个节点与其他最相似节点的边(我尝试构建一个基于图的推荐器)

anime_interactions来自嵌入矩阵的点积通过linear_kernel

anime_interactions = linear_kernel(anime_embeddings, anime_embeddings)

您的 iterrows() 循环以 idx 作为索引占位符遍历 interactions_from_selected_users_df 中的每一行。但是您也使用 idx 索引到 anime_interactions

根据您的评论,interactions_from_selected_users_df 中的行数比 anime_interactions 中的行数多,因此当 idx 大于行数时,您会看到您遇到的错误( 5105) 在 anime_interactions.

您可以在循环中使用条件逻辑或 try/except 来捕获这些错误 - 或者在 idx == len(anime_interactions).

时停止