当前位置: 首页 > 知识库问答 >
问题:

单位置索引器超出范围

葛雪松
2023-03-14
with open('similarities/EuclideanSimilarity.csv', 'w') as result_file:

print('user1,user2,similarity', file=result_file)

print('Calculating similarities between users...')

for u1 in tqdm(users, total=len(users)):

for u2 in users:

ratings1 = np.nan_to_num(np.array(user_ratings_matrix.iloc[u1 - 1].values))

ratings2 = np.nan_to_num(np.array(user_ratings_matrix.iloc[u2 - 1].values))

              sim = 1 / (1 + distance.euclidean(ratings1, ratings2))
                print(f"{u1},{u2},{sim}", file=result_file)"

~/anaconda3/lib/python3.6/site-包/熊猫/核心/indexing.py在getitem1371 1372maybe_callable=com._apply_if_callable(key,self.obj)-

~/anaconda3/lib/python3.6/site-包/熊猫/核心/indexing.py在_getitem_axis(自,键,轴)1828 1829#验证位置-

~/anaconda3/lib/python3.6/site-packages/pandas/core/index.py in_是有效的_整数(self,key,axis)1711 l=len(ax)1712如果key

索引器:单个位置索引器超出范围

共有1个答案

习淇
2023-03-14

关于用户用户评分矩阵的类型/内容,您没有提供足够的信息来可靠地回答您的问题。如果我假设users是一个userid列表,user\u ratings\u matrix是一个与users顺序相同的标准PandasDataFrame,那么您可以为循环重写,如下所示:

for u1,row1 in tqdm(zip(users, user_ratings_matrix.itertuples(index=False, name=None)), total=len(users)):
    for u2,row2 in zip(users, user_ratings_matrix.itertuples(index=False, name=None)):
        ratings1 = np.nan_to_num(np.array(row1))
        ratings2 = np.nan_to_num(np.array(row2))
        sim = 1 / (1 + distance.euclidean(ratings1, ratings2))
        print(f"{u1},{u2},{sim}", file=result_file)"

user_ratings_matrix.itertuples(index=False,name=无)将迭代数据框中的行,并以元组的形式返回每个行。

zip(users,user\u ratings\u matrix.itertuples(index=False,name=None))将迭代(userID,tuple(dataframe\u row))对。

此外,在下次发布问题之前,您可能应该阅读这些指南,了解如何生成其他人可以运行/使用的示例。这将帮助你在这个网站上获得更好的答案。

 类似资料:
  • 错误 ()1中的索引器错误回溯(最近一次调用)---- ~/Documents/PhD/IntelliSys19/journal/ColdStart_实验/相似性_函数。用户中u2的装饰矩阵中的py()145:146评级1=np。nan_to_num(np.array(user_ratings_matrix.iloc[u1-1].values))-- ~/anaconda3/lib/python3

  • 问题内容: 我正在尝试使用以下方法对一些信息进行编码以读入机器学习模型 但是我收到一个错误,内容为 问题答案: 此错误是由以下原因引起的: 此处的索引超出范围很可能是因为您的数据集中的列少于19个,因此第18列不存在。您提供的以下代码根本不使用Y,因此您现在可以注释掉此行。

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 问题内容: 我已经开始处理我的第一个Java程序,它是一个简单的计算器,但是我得到一个错误,声称我的数组超出范围。我尝试对其进行调试,以了解这样做的原因和原因,并遵循纸上的代码,两者均显示了我期望和期望的结果。因此,我看不到问题出在哪里。代码不完整。 根据调试器,此行出现错误: 这是我当前拥有的代码的主要部分: 这是我收到的错误消息: 问题答案: 当等于中的最后一个元素索引时,则将大于最后一个元素

  • 我有一个bean,我用它作为传输对象。bean的类定义为- 我正在使用这个bean,在带有Model属性注释的Spring控制器中。对于JSP,我有JSTL。我已经用这样的字段填充了JSP。 当我提交表单时,我得到Java . lang . indexoutofboundsexception:Index:0,Size: 0。

  • 所以我创建了这个注释: 但当我运行它时,我得到了这个异常: 无法为映射设置参数:ParameterMapping{Property='name',mode=in,javatype=class java.lang.String,JDBCType=varchar,NumericScale=null,ResultMapid='null',JDBCTypeName='null',Expression='n