user_ratings_matrix = training_df.pivot(index='userId', columns='movieId', values='rating')
users = user_ratings_matrix.index.values
print('Creating corated data frame...')
with open('similarities/UsersCorated.csv', 'w') as result_file:
print('user1,user2,corated', file=result_file)
print('Calculating corated between users...')
for u1 in tqdm(users, total=len(users)):
for u2 in users:
movies_u1 = ~np.isnan(user_ratings_matrix.iloc[u1 - 1])
movies_u2 = ~np.isnan(user_ratings_matrix.iloc[u2 - 1])
same_movies = np.logical_and(movies_u1, movies_u2)
num_same_movies = list(same_movies).count(True)
print(f"{u1},{u2},{num_same_movies}", file=result_file)
错误
IndexError Traceback(最近的呼叫 最后)在() 1个 ----> 2个相似点-Functions.Corated_Matrix() 3相似功能_Corated_相似度() 4 5印('完成!!!')
〜/ Documents / PhD / IntelliSys19 / journal / ColdStart_Experiment / Similarities_Functions.py 在Corated_Matrix()中 对于u2用户为145: 146个评分1 = np.nan_to_num(np.array(user_ratings_matrix.iloc [u1-1] .values)) -> 147个评分2 = np.nan_to_num(np.array(user_ratings_matrix.iloc [u2-1] .values)) 148 149 sim = pearsonr(ratings1,ratings2)
〜/ anaconda3 / lib / python3.6 / site-packages / pandas / core / indexing.py在 getitem ((自身,密钥))1371 1372也许_callable = com._apply_if_callable(密钥,self.obj) -> 1373返回self._getitem_axis(可能是可调用的,axis =轴)1374 1375 def _is_scalar_access(自身,键):
〜/ anaconda3 / lib / python3.6 / site-packages / pandas / core / indexing.py在 _getitem_axis(self,key,axis)1828 1829#验证位置 -> 1830 self._is_valid_integer(key,axis)1831 1832返回self._get_loc(key,axis = axis)
〜/ anaconda3 / lib / python3.6 / site-packages / pandas / core / indexing.py在 _is_valid_integer(自身,键,轴)1711 l = len(ax)1712,如果键> = l或键<-l: -> 1713提高IndexError(“单个位置索引器超出范围”)1714返回True 1715
IndexError:单个位置索引器超出范围
答案 0 :(得分:0)
IndexError: single positional indexer is out-of-bounds
我相信这只是在说您的iloc语句正在查找不存在的内容。如果您的DataFrame长5行,则iloc [5,0]会超出范围。这是因为最后一行是iloc [4,0],因为它从0开始计数。