我收到错误IndexError:索引5105超出了轴5的大小5105的范围 使用该代码,我理解了问题,但是知道我使用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)
答案 0 :(得分:0)
您的iterrows()
循环使用interactions_from_selected_users_df
作为索引占位符,对idx
中的每一行进行迭代。但是,您也可以使用idx
来索引anime_interactions
。
根据您的评论,interactions_from_selected_users_df
中的行多于anime_interactions
,因此当idx
大于行数时,您将看到错误消息(5105)在anime_interactions
中。
您可以在循环内部使用条件逻辑或try
/ except
捕获这些错误-或仅在idx == len(anime_interactions)
时停止。