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
索引器:单个位置索引器超出范围
关于用户
或用户评分矩阵
的类型/内容,您没有提供足够的信息来可靠地回答您的问题。如果我假设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