Commit 0eccae37 authored by 段英荣's avatar 段英荣

调试

parent 806150f0
...@@ -155,22 +155,22 @@ class LinUCB: ...@@ -155,22 +155,22 @@ class LinUCB:
try: try:
user_tag_linucb_dict = dict() user_tag_linucb_dict = dict()
for tag_id in tag_list: for tag_id in tag_list:
if content_level_str == "6": # if content_level_str == "6":
baT = np.array([10.0,10.0]) # baT = np.array([10.0,10.0])
elif content_level_str == "5": # elif content_level_str == "5":
baT = np.array([8.0, 8.0]) # baT = np.array([8.0, 8.0])
elif content_level_str == "4": # elif content_level_str == "4":
baT = np.array([6.0, 6.0]) # baT = np.array([6.0, 6.0])
elif content_level_str == "3.5": # elif content_level_str == "3.5":
baT = np.array([4.0, 4.0]) # baT = np.array([4.0, 4.0])
else: # else:
baT = np.array([0.0, 0.0]) # baT = np.array([0.0, 0.0])
ba = np.transpose(baT) # ba = np.transpose(baT)
init_dict = { init_dict = {
"Aa": np.identity(cls.d), "Aa": np.identity(cls.d),
"theta": np.zeros((cls.d, 1)), "theta": np.zeros((cls.d, 1)),
"ba": ba, "ba": np.zeros((cls.d, 1)),
"AaI": np.identity(cls.d) "AaI": np.identity(cls.d)
} }
pickle_data = pickle.dumps(init_dict) pickle_data = pickle.dumps(init_dict)
...@@ -199,6 +199,8 @@ class LinUCB: ...@@ -199,6 +199,8 @@ class LinUCB:
r = cls.r1 * 6 r = cls.r1 * 6
elif content_level_str == "3.5": elif content_level_str == "3.5":
r = cls.r1 * 4 r = cls.r1 * 4
else:
r = cls.r1
else: else:
r = cls.r0 r = cls.r0
...@@ -211,19 +213,19 @@ class LinUCB: ...@@ -211,19 +213,19 @@ class LinUCB:
LinUCB.init_device_id_linucb_info(redis_client, redis_name_linucb_matrix,[content_id],content_level_str) LinUCB.init_device_id_linucb_info(redis_client, redis_name_linucb_matrix,[content_id],content_level_str)
ori_redis_tag_data = redis_cli.hget(redis_name_linucb_matrix, content_id) ori_redis_tag_data = redis_cli.hget(redis_name_linucb_matrix, content_id)
# ori_redis_tag_dict = pickle.loads(ori_redis_tag_data) ori_redis_tag_dict = pickle.loads(ori_redis_tag_data)
# new_Aa_matrix = ori_redis_tag_dict["Aa"] + np.dot(xa, xaT) new_Aa_matrix = ori_redis_tag_dict["Aa"] + np.dot(xa, xaT)
# new_AaI_matrix = np.linalg.solve(new_Aa_matrix, np.identity(cls.d)) new_AaI_matrix = np.linalg.solve(new_Aa_matrix, np.identity(cls.d))
# new_ba_matrix = ori_redis_tag_dict["ba"] + r*xa new_ba_matrix = ori_redis_tag_dict["ba"] + r*xa
#
# user_tag_dict = { user_tag_dict = {
# "Aa": new_Aa_matrix, "Aa": new_Aa_matrix,
# "ba": new_ba_matrix, "ba": new_ba_matrix,
# "AaI": new_AaI_matrix, "AaI": new_AaI_matrix,
# "theta": np.dot(new_AaI_matrix, new_ba_matrix) "theta": np.dot(new_AaI_matrix, new_ba_matrix)
# } }
#
# redis_cli.hset(redis_name_linucb_matrix, content_id, pickle.dumps(user_tag_dict)) redis_cli.hset(redis_name_linucb_matrix, content_id, pickle.dumps(user_tag_dict))
else: else:
logging.warning("not standard linucb reward") logging.warning("not standard linucb reward")
return True return True
......
...@@ -225,58 +225,59 @@ if __name__ == "__main__": ...@@ -225,58 +225,59 @@ if __name__ == "__main__":
linucb_matrix_redis_name = "strategy:linucb:matrix:content_type:diary" linucb_matrix_redis_name = "strategy:linucb:matrix:content_type:diary"
# diary_click_file = "/data/log/duan_test/feed_query_data/feed_click_info.txt" diary_click_file = "/data/log/duan_test/feed_query_data/feed_click_info.txt"
# diary_fd = open(diary_click_file,"r") diary_fd = open(diary_click_file,"r")
diary_tag_label_num_dict = dict()
for line in diary_fd.readlines():
line = line.strip()
line = line.strip("\n")
line = line.strip("\r")
line = line.strip(" ")
item_list = line.split(",")
device_id = item_list[3]
diary_id = item_list[4]
# Generate_Feature_Info.generate_user_feature_to_redis(device_id, label_encoder,onehot_encoder)
user_feature_list = Generate_Feature_Info.get_user_feature_by_device_id(device_id)
content_feature_list = Generate_Feature_Info.get_content_feature(diary_id)
offi_context_feature_list = []
if len(user_feature_list)>0 and len(content_feature_list)>0:
# offi_context_feature_list.append(user_feature_list[0])
offi_context_feature_list.append(content_feature_list[0])
offi_context_feature_list.append(content_feature_list[0])
diary_content_level = str(content_feature_list[1])
if content_feature_list[0] not in diary_tag_label_num_dict:
diary_tag_label_num_dict[content_feature_list[0]] = 0
diary_tag_label_num_dict[content_feature_list[0]] += 1
print(offi_context_feature_list)
print("*"*50)
LinUCB.update_linucb_info(user_features=offi_context_feature_list,reward=1,content_id=diary_id,
redis_name_linucb_matrix=linucb_matrix_redis_name,redis_cli=redis_client,
content_level_str=diary_content_level)
diary_tag_label_num_list = sorted(diary_tag_label_num_dict.items(),key=lambda item:item[1],reverse=True)
print(diary_tag_label_num_list)
diary_fd.close()
# device_id="868771031984211"
# # device_id="F0E142E6-EF98-482F-A470-34A6CE442D88"
# user_feature_list = Generate_Feature_Info.get_user_feature_by_device_id(device_id)
# #
# diary_tag_label_num_dict = dict() # test_count = 50
# for line in diary_fd.readlines(): # while test_count:
# line = line.strip() # begin=time.time()
# line = line.strip("\n") # test_feature = [user_feature_list[0],user_feature_list[0]]
# line = line.strip("\r") # print(test_feature)
# line = line.strip(" ") # all_diary_content_redis_dict = redis_client.hgetall("strategy:linucb:matrix:content_type:diary")
# # top_tag_dict, top_tag_set = LinUCB.linucb_recommend_tag(all_diary_content_redis_dict,test_feature,list(all_diary_content_redis_dict.keys()))
# item_list = line.split(",") # print(time.time()-begin)
# device_id = item_list[3] # print(top_tag_dict)
# diary_id = item_list[4]
# # Generate_Feature_Info.generate_user_feature_to_redis(device_id, label_encoder,onehot_encoder)
#
# user_feature_list = Generate_Feature_Info.get_user_feature_by_device_id(device_id)
# content_feature_list = Generate_Feature_Info.get_content_feature(diary_id)
#
# offi_context_feature_list = []
# if len(user_feature_list)>0 and len(content_feature_list)>0:
# offi_context_feature_list.append(user_feature_list[0])
# offi_context_feature_list.append(content_feature_list[0])
# diary_content_level = str(content_feature_list[1])
#
# if content_feature_list[0] not in diary_tag_label_num_dict:
# diary_tag_label_num_dict[content_feature_list[0]] = 0
# diary_tag_label_num_dict[content_feature_list[0]] += 1
#
# print(offi_context_feature_list)
# print("*"*50)
# LinUCB.update_linucb_info(user_features=offi_context_feature_list,reward=1,content_id=diary_id,
# redis_name_linucb_matrix=linucb_matrix_redis_name,redis_cli=redis_client,
# content_level_str=diary_content_level)
#
# diary_tag_label_num_list = sorted(diary_tag_label_num_dict.items(),key=lambda item:item[1],reverse=True)
# print(diary_tag_label_num_list)
# diary_fd.close()
device_id="868771031984211"
# device_id="F0E142E6-EF98-482F-A470-34A6CE442D88"
user_feature_list = Generate_Feature_Info.get_user_feature_by_device_id(device_id)
test_count = 50
while test_count:
begin=time.time()
test_feature = [user_feature_list[0],user_feature_list[0]]
print(test_feature)
all_diary_content_redis_dict = redis_client.hgetall("strategy:linucb:matrix:content_type:diary")
top_tag_dict, top_tag_set = LinUCB.linucb_recommend_tag(all_diary_content_redis_dict,test_feature,list(all_diary_content_redis_dict.keys()))
print(time.time()-begin)
print(top_tag_dict)
# for diary_id in top_tag_set: # for diary_id in top_tag_set:
# update_feature_list = [user_feature_list[0]] # update_feature_list = [user_feature_list[0]]
...@@ -286,9 +287,9 @@ if __name__ == "__main__": ...@@ -286,9 +287,9 @@ if __name__ == "__main__":
# print(update_feature_list) # print(update_feature_list)
# LinUCB.update_linucb_info(user_features=update_feature_list,reward=0,content_id=diary_id,redis_name_linucb_matrix=linucb_matrix_redis_name,redis_cli=redis_client) # LinUCB.update_linucb_info(user_features=update_feature_list,reward=0,content_id=diary_id,redis_name_linucb_matrix=linucb_matrix_redis_name,redis_cli=redis_client)
test_count -= 1 # test_count -= 1
print("*"*50) # print("*"*50)
time.sleep(2) # time.sleep(2)
# begin=time.time() # begin=time.time()
# test_feature = [1,2] # test_feature = [1,2]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment