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)