Commit f96b4697 authored by 段英荣's avatar 段英荣

调试

parent 4af65d5c
...@@ -21,8 +21,8 @@ import time ...@@ -21,8 +21,8 @@ import time
class LinUCB: class LinUCB:
d = 3 d = 2
alpha = 10 alpha = 0.1
r1 = 10 r1 = 10
r0 = -0.1 r0 = -0.1
default_tag_list = list() default_tag_list = list()
...@@ -170,7 +170,7 @@ class LinUCB: ...@@ -170,7 +170,7 @@ class LinUCB:
return False return False
@classmethod @classmethod
def update_linucb_info(cls, user_features,reward, content_id, redis_name_linucb_matrix,redis_cli): def update_linucb_info(cls,reward, content_id, redis_name_linucb_matrix,redis_cli,user_features=None,user_features_array=None):
try: try:
if reward == -1: if reward == -1:
logging.warning("reward val error!") logging.warning("reward val error!")
...@@ -180,7 +180,10 @@ class LinUCB: ...@@ -180,7 +180,10 @@ class LinUCB:
else: else:
r = cls.r0 r = cls.r0
xaT = np.array([user_features]) if user_features_array:
xaT = np.array(user_features_array)
else:
xaT = np.array([user_features])
xa = np.transpose(xaT) xa = np.transpose(xaT)
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)
......
...@@ -85,7 +85,7 @@ class Generate_Feature_Info(object): ...@@ -85,7 +85,7 @@ class Generate_Feature_Info(object):
@classmethod @classmethod
def generate_content_feature_to_redis(cls,label_encoder,content_type="diary"): def generate_content_feature_to_redis(cls,onehot_encoder,content_type="diary"):
try: try:
redis_name_content_linucb_feature = cls.redis_name_content_linucb_feature_prefix + content_type redis_name_content_linucb_feature = cls.redis_name_content_linucb_feature_prefix + content_type
...@@ -138,12 +138,11 @@ class Generate_Feature_Info(object): ...@@ -138,12 +138,11 @@ class Generate_Feature_Info(object):
tag_label = -1 tag_label = -1
if len(offi_tags_v3)>0: if len(offi_tags_v3)>0:
try: try:
tag_label = label_encoder.transform(offi_tags_v3)[0] diary_feature_list = onehot_encoder.transform([offi_tags_v3]).toarray().tolist()
redis_client.hset(redis_name_content_linucb_feature, diary_id,
json.dumps(diary_feature_list))
except: except:
pass logging.error("catch exception,err_msg:%s" % traceback.format_exc())
diary_feature_list = [tag_label,content_level]
redis_client.hset(redis_name_content_linucb_feature,diary_id,json.dumps(diary_feature_list))
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
...@@ -157,7 +156,7 @@ class Generate_Feature_Info(object): ...@@ -157,7 +156,7 @@ class Generate_Feature_Info(object):
return "doris:user_portrait:tag3:device_id:" + str(device_id) return "doris:user_portrait:tag3:device_id:" + str(device_id)
@classmethod @classmethod
def generate_user_feature_to_redis(cls,device_id,label_encoder): def generate_user_feature_to_redis(cls,device_id,onehot_encoder):
try: try:
redis_name_user_linucb_feature = cls.redis_name_user_linucb_feature_prefix redis_name_user_linucb_feature = cls.redis_name_user_linucb_feature_prefix
...@@ -170,15 +169,10 @@ class Generate_Feature_Info(object): ...@@ -170,15 +169,10 @@ class Generate_Feature_Info(object):
sorted_user_portrait_list = sorted(user_portrait_dict["projects"].items(), key=lambda x: x[1], reverse=True) sorted_user_portrait_list = sorted(user_portrait_dict["projects"].items(), key=lambda x: x[1], reverse=True)
user_max_score_tag = sorted_user_portrait_list[0][0].encode("utf-8") user_max_score_tag = sorted_user_portrait_list[0][0].encode("utf-8")
try: try:
user_tag_label = label_encoder.transform([user_max_score_tag])[0] user_feature_list = onehot_encoder.transform([[user_max_score_tag]]).toarray().tolist()
print(user_max_score_tag) redis_client.hset(redis_name_user_linucb_feature, device_id, json.dumps(user_feature_list))
print(user_tag_label)
except: except:
pass logging.error("catch exception,err_msg:%s" % traceback.format_exc())
user_feature_list = [user_tag_label]
redis_client.hset(redis_name_user_linucb_feature,device_id,json.dumps(user_feature_list))
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
...@@ -191,7 +185,7 @@ class Generate_Feature_Info(object): ...@@ -191,7 +185,7 @@ class Generate_Feature_Info(object):
user_feature_list = list() user_feature_list = list()
if user_feature_redis_data: if user_feature_redis_data:
user_feature_list = [float(json.loads(user_feature_redis_data)[0])] user_feature_list = json.loads(user_feature_redis_data)
return user_feature_list return user_feature_list
except: except:
...@@ -206,8 +200,7 @@ class Generate_Feature_Info(object): ...@@ -206,8 +200,7 @@ class Generate_Feature_Info(object):
content_feature_redis_data = redis_client.hget(redis_name_content_linucb_feature, card_id) content_feature_redis_data = redis_client.hget(redis_name_content_linucb_feature, card_id)
if content_feature_redis_data: if content_feature_redis_data:
content_feature_redis_list = json.loads(content_feature_redis_data) user_feature_list = json.loads(content_feature_redis_data)
user_feature_list = [float(item) for item in content_feature_redis_list]
return user_feature_list return user_feature_list
except: except:
...@@ -225,7 +218,7 @@ if __name__ == "__main__": ...@@ -225,7 +218,7 @@ if __name__ == "__main__":
# device_id="868771031984211" # device_id="868771031984211"
# Generate_Feature_Info.generate_user_feature_to_redis(device_id,label_encoder) # Generate_Feature_Info.generate_user_feature_to_redis(device_id,label_encoder)
# Generate_Feature_Info.generate_content_feature_to_redis(label_encoder) Generate_Feature_Info.generate_content_feature_to_redis(onehot_encoder)
linucb_matrix_redis_name = "strategy:linucb:matrix:content_type:diary" linucb_matrix_redis_name = "strategy:linucb:matrix:content_type:diary"
...@@ -242,15 +235,18 @@ if __name__ == "__main__": ...@@ -242,15 +235,18 @@ if __name__ == "__main__":
item_list = line.split(",") item_list = line.split(",")
device_id = item_list[3] device_id = item_list[3]
diary_id = item_list[4] diary_id = item_list[4]
Generate_Feature_Info.generate_user_feature_to_redis(device_id, label_encoder) Generate_Feature_Info.generate_user_feature_to_redis(device_id, onehot_encoder)
user_feature_list = Generate_Feature_Info.get_user_feature_by_device_id(device_id) 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) content_feature_list = Generate_Feature_Info.get_content_feature(diary_id)
user_feature_list = user_feature_list+content_feature_list offi_context_feature_list = list()
print(user_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])
LinUCB.update_linucb_info(user_features=user_feature_list,reward=1,content_id=diary_id, print(offi_context_feature_list)
LinUCB.update_linucb_info(user_features_array=offi_context_feature_list,reward=1,content_id=diary_id,
redis_name_linucb_matrix=linucb_matrix_redis_name,redis_cli=redis_client) redis_name_linucb_matrix=linucb_matrix_redis_name,redis_cli=redis_client)
diary_fd.close() diary_fd.close()
# test_val_list = ["切开双眼皮"] # test_val_list = ["切开双眼皮"]
......
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