【发布时间】:2019-04-13 09:15:40
【问题描述】:
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-packages/pandas/core/indexing.py in getitem(self, key) 1371 第1372章 -> 1373 返回 self._getitem_axis(maybe_callable,axis=axis) 1374 第1375章
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis) 1828 第1829章 -> 1830 self._is_valid_integer(键,轴) 1831 1832返回self._get_loc(键,轴=轴)
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _is_valid_integer(self, key, axis) 第1711章 1712 如果键 >= l 或键 1713 raise IndexError("单个位置索引器超出范围") 1714 返回真 第1715章
IndexError: 单个位置索引器超出范围
【问题讨论】:
-
你让我们猜测错误是什么以及它发生在哪里。请编辑问题以包含完整的错误跟踪消息。
-
我不太了解 pandas 或 numpy,但我猜
[u1 - 1]超出了user_ratings_matrix.iloc的范围。 -
是的,我发现错误是因为我在数据集中有 2113 个用户,但 userId 是随机编号的,而不是 1,2,3,4 .....,2113。它是 75,78, ...,8567。那么我该如何解决这个问题