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

调试

parent 4af65d5c
......@@ -21,8 +21,8 @@ import time
class LinUCB:
d = 3
alpha = 10
d = 2
alpha = 0.1
r1 = 10
r0 = -0.1
default_tag_list = list()
......@@ -170,7 +170,7 @@ class LinUCB:
return False
@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:
if reward == -1:
logging.warning("reward val error!")
......@@ -180,7 +180,10 @@ class LinUCB:
else:
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)
ori_redis_tag_data = redis_cli.hget(redis_name_linucb_matrix, content_id)
......
......@@ -85,7 +85,7 @@ class Generate_Feature_Info(object):
@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:
redis_name_content_linucb_feature = cls.redis_name_content_linucb_feature_prefix + content_type
......@@ -138,12 +138,11 @@ class Generate_Feature_Info(object):
tag_label = -1
if len(offi_tags_v3)>0:
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:
pass
diary_feature_list = [tag_label,content_level]
redis_client.hset(redis_name_content_linucb_feature,diary_id,json.dumps(diary_feature_list))
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......@@ -157,7 +156,7 @@ class Generate_Feature_Info(object):
return "doris:user_portrait:tag3:device_id:" + str(device_id)
@classmethod
def generate_user_feature_to_redis(cls,device_id,label_encoder):
def generate_user_feature_to_redis(cls,device_id,onehot_encoder):
try:
redis_name_user_linucb_feature = cls.redis_name_user_linucb_feature_prefix
......@@ -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)
user_max_score_tag = sorted_user_portrait_list[0][0].encode("utf-8")
try:
user_tag_label = label_encoder.transform([user_max_score_tag])[0]
print(user_max_score_tag)
print(user_tag_label)
user_feature_list = onehot_encoder.transform([[user_max_score_tag]]).toarray().tolist()
redis_client.hset(redis_name_user_linucb_feature, device_id, json.dumps(user_feature_list))
except:
pass
user_feature_list = [user_tag_label]
redis_client.hset(redis_name_user_linucb_feature,device_id,json.dumps(user_feature_list))
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......@@ -191,7 +185,7 @@ class Generate_Feature_Info(object):
user_feature_list = list()
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
except:
......@@ -206,8 +200,7 @@ class Generate_Feature_Info(object):
content_feature_redis_data = redis_client.hget(redis_name_content_linucb_feature, card_id)
if content_feature_redis_data:
content_feature_redis_list = json.loads(content_feature_redis_data)
user_feature_list = [float(item) for item in content_feature_redis_list]
user_feature_list = json.loads(content_feature_redis_data)
return user_feature_list
except:
......@@ -225,7 +218,7 @@ if __name__ == "__main__":
# device_id="868771031984211"
# 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"
......@@ -242,15 +235,18 @@ if __name__ == "__main__":
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)
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)
content_feature_list = Generate_Feature_Info.get_content_feature(diary_id)
user_feature_list = user_feature_list+content_feature_list
print(user_feature_list)
offi_context_feature_list = 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)
diary_fd.close()
# 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