#coding utf-8 import json import math import time def load_json(filename): with open(filename, 'r') as fin: json_data = json.load(fin) return json_data def sigmoid(x): return 1.0 / (1.0 + math.exp(-x)) online_w = load_json('./ad_out_v1_online_w.json') def get_online_score(online_features): score = online_w.get('bias', 0.0) score += sum([online_w.get('#'.join([k, v]), 0.0) for k, v in online_features.items()]) return score def get_final_score(online_features, offline_score): online_score = get_online_score(online_features) final_score = online_score + offline_score final_score = sigmoid(final_score) return final_score, online_score if __name__ == '__main__': app_type = 0 online_features = { 'ctx_apptype': str(app_type), 'ctx_week': time.strftime('%w', time.localtime()), 'ctx_hour': time.strftime('%H', time.localtime()), } print(get_final_score(online_features, -1.0)) print(get_final_score(online_features, 0.0)) print(get_final_score({}, 0.0))