11import pandas as pd
22import numpy as np
33
4- def get_ratings (path , users_file_name ):
5- df_users = pd .read_csv (path + users_file_name , encoding = 'cp949' )
4+ def get_ratings (path , users_file_name , books_file_name ):
5+ df_users = pd .read_csv (path + users_file_name , encoding = 'UTF8' )
6+ df_books = pd .read_csv (path + books_file_name , encoding = 'UTF8' )
67 df_users_books = pd .DataFrame (df_users , columns = ['user_id' , 'like' ])
78 sr_users = []
89 sr_books = []
@@ -14,19 +15,28 @@ def get_ratings(path, users_file_name):
1415 i = i .split (', ' )
1516 list_like .append (i )
1617
17- for user_id in df_users_books ['user_id' ]:
18- for book_id in list_like [user_id ]:
19- sr_users .append (user_id )
20- sr_books .append (book_id )
18+ for user_idx in df_users_books ['user_id' ]:
19+ for book_idx in list_like [user_idx ]:
20+ if book_idx == '' :
21+ break
22+ sr_users .append (user_idx )
23+ sr_books .append (book_idx )
2124 sr_ratings .append (1 )
2225
26+ for book_idx in range (len (df_books )):
27+ if sr_users [0 ]:
28+ sr_users .append (sr_users [0 ])
29+ if sr_books [0 ]:
30+ sr_books .append (book_idx )
31+ if sr_ratings [0 ]:
32+ sr_ratings .append (0 )
2333 R = pd .DataFrame ({
24- 'user_id ' : sr_users ,
25- 'book_id ' : sr_books ,
34+ 'user_idx ' : sr_users ,
35+ 'book_idx ' : sr_books ,
2636 'ratings' : sr_ratings
2737 })
2838
29- R = R .pivot_table ('ratings' , index = 'user_id ' , columns = 'book_id ' ).fillna (0 )
39+ R = R .pivot_table ('ratings' , index = 'user_idx ' , columns = 'book_idx ' ).fillna (0 )
3040 R .rename (columns = lambda x : int (x ), inplace = True )
3141 R = R .sort_index (axis = 1 )
3242 return R
@@ -76,7 +86,7 @@ def predict(file_path, users_file_name, pred_score_file_name):
7686 regularization_list = []
7787 total_losses = []
7888
79- for i in range (15 ):
89+ for i in range (6 ):
8090 if i != 0 :
8191 optimize_user (X , Y , C , P , nu , nf , r_lambda )
8292 optimize_item (X , Y , C , P , ni , nf , r_lambda )
@@ -100,11 +110,3 @@ def predict(file_path, users_file_name, pred_score_file_name):
100110
101111 df_predict = pd .DataFrame (predict , columns = range (len (R [0 ]))).fillna (0 ) # user-item = 1400 x 1125
102112 df_predict .to_csv (file_path + pred_score_file_name )
103-
104- '''
105- file_path = '/var/www/python_flask/main/models/'
106- users_file_name = "API_test_users.csv"
107- books_file_name = "API_test_books.csv"
108- pred_file_name = "rec_pred_score_1.csv"
109-
110- predict(file_path, users_file_name, pred_file_name)'''
0 commit comments