0

I tried to find cosine_similarity that compare pivot table and object using .loc, and the result says ValueError: Expected 2D array, got 1D array instead: array=[4. 4. 3. ... 3. 3. 3.]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

So, i tried to followed the suggestion, but it doesn't work, it says "Cannot compare multidimensional index" , could you guys help me and explain to me what should i do?

this my code:

#delete related_test
for i in range(len(collab_rated_test_fix)):
          ratings_test_df = ratings_test_df.drop(ratings_test_df.loc[(ratings_test_df.user_id == user_id_test) &\
                                                                      (ratings_test_df.book_id == collab_rated_test_fix[i])]\
                                                                      .index)
#pivot table
user_book_rating = pd.pivot_table(ratings_test_df, values="rating", index="book_id",columns="user_id")
user_book_rating = user_book_rating.fillna(user_book_rating.mean())

user_id_test = 9923

#cosine similarity
rel_user = pd.DataFrame(columns=['userId_1', 'userId_2','similarity'])

for rows, mean in user_book_rating.iteritems():

      sim = cosine_similarity(user_book_rating.loc[ : , user_id_test], user_book_rating.loc[ : , rows]) #error
      
      rel_user = rel_user.append({'UserId_1': user_id_test, 'UserId_2': rows, 'similarity': sim}, ignore_index=True)

rel_user['userId_1'] = rel_user['userId_1'].apply(int)
rel_user['userId_2'] = rel_user['userId_2'].apply(int)
Albert
  • 1
  • 1

0 Answers0