|
@@ -4,10 +4,10 @@ from dao.redis_db import Redis
|
|
|
from models import HotRecallModel, UserItemScore, ItemCFModel, calculate_similarity_and_save_results
|
|
from models import HotRecallModel, UserItemScore, ItemCFModel, calculate_similarity_and_save_results
|
|
|
import os
|
|
import os
|
|
|
|
|
|
|
|
-def run_hot_recall(order_data):
|
|
|
|
|
|
|
+def run_hot_recall(order_data, city_uuid):
|
|
|
"""运行热度召回算法"""
|
|
"""运行热度召回算法"""
|
|
|
hot_model = HotRecallModel(order_data)
|
|
hot_model = HotRecallModel(order_data)
|
|
|
- hot_model.calculate_all_hot_score()
|
|
|
|
|
|
|
+ hot_model.calculate_all_hot_score(city_uuid)
|
|
|
print("热度召回已完成!")
|
|
print("热度召回已完成!")
|
|
|
|
|
|
|
|
def run_itemcf(order_data, args):
|
|
def run_itemcf(order_data, args):
|
|
@@ -28,7 +28,7 @@ def run_itemcf(order_data, args):
|
|
|
|
|
|
|
|
# 运行协同过滤召回
|
|
# 运行协同过滤召回
|
|
|
itemcf_model = ItemCFModel()
|
|
itemcf_model = ItemCFModel()
|
|
|
- itemcf_model.train(args.interst_score_path, args.similarity_matrix_path, args.n, args.k, args.top_n, args.n_jobs)
|
|
|
|
|
|
|
+ itemcf_model.train(args.interst_score_path, args.similarity_matrix_path, args.city_uuid, args.n, args.k, args.top_n, args.n_jobs)
|
|
|
print("协同过滤已完成!")
|
|
print("协同过滤已完成!")
|
|
|
|
|
|
|
|
def run_itemcf_inference(product_code):
|
|
def run_itemcf_inference(product_code):
|
|
@@ -58,9 +58,10 @@ def run():
|
|
|
# parser.add_argument("--interst_score_path", type=str, default="./models/recall/itemCF/matrix/score.csv")
|
|
# parser.add_argument("--interst_score_path", type=str, default="./models/recall/itemCF/matrix/score.csv")
|
|
|
# parser.add_argument("--similarity_matrix_path", type=str, default="./models/recall/itemCF/matrix/similarity.csv")
|
|
# parser.add_argument("--similarity_matrix_path", type=str, default="./models/recall/itemCF/matrix/similarity.csv")
|
|
|
parser.add_argument("--n", type=int, default=100)
|
|
parser.add_argument("--n", type=int, default=100)
|
|
|
- parser.add_argument("--k", type=int, default=10)
|
|
|
|
|
- parser.add_argument("--top_n", type=int, default=200, help='default n * k')
|
|
|
|
|
|
|
+ parser.add_argument("--k", type=int, default=20)
|
|
|
|
|
+ parser.add_argument("--top_n", type=int, default=2000, help='default n * k')
|
|
|
parser.add_argument("--n_jobs", type=int, default=4)
|
|
parser.add_argument("--n_jobs", type=int, default=4)
|
|
|
|
|
+ parser.add_argument("--city_uuid", type=str, default='00000000000000000000000011441801', help="City UUID for filtering data")
|
|
|
|
|
|
|
|
# 协同过滤推理配置
|
|
# 协同过滤推理配置
|
|
|
parser.add_argument("--product_code", type=int, default=110111)
|
|
parser.add_argument("--product_code", type=int, default=110111)
|
|
@@ -75,17 +76,26 @@ def run():
|
|
|
|
|
|
|
|
|
|
|
|
|
if args.run_all:
|
|
if args.run_all:
|
|
|
- order_data = load_order_data_from_mysql()
|
|
|
|
|
- run_hot_recall(order_data)
|
|
|
|
|
- run_itemcf(order_data, args)
|
|
|
|
|
|
|
+ order_data = load_order_data_from_mysql(args.city_uuid)
|
|
|
|
|
+ if order_data is not None:
|
|
|
|
|
+ run_hot_recall(order_data, args.city_uuid)
|
|
|
|
|
+ run_itemcf(order_data, args)
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("数据库中暂无数据")
|
|
|
|
|
|
|
|
elif args.run_hot:
|
|
elif args.run_hot:
|
|
|
- order_data = load_order_data_from_mysql()
|
|
|
|
|
- run_hot_recall(order_data)
|
|
|
|
|
|
|
+ order_data = load_order_data_from_mysql(args.city_uuid)
|
|
|
|
|
+ if order_data is not None:
|
|
|
|
|
+ run_hot_recall(order_data, args.city_uuid)
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("数据库中暂无数据")
|
|
|
|
|
|
|
|
elif args.run_itemcf:
|
|
elif args.run_itemcf:
|
|
|
- order_data = load_order_data_from_mysql()
|
|
|
|
|
- run_itemcf(order_data, args)
|
|
|
|
|
|
|
+ order_data = load_order_data_from_mysql(args.city_uuid)
|
|
|
|
|
+ if order_data is not None:
|
|
|
|
|
+ run_itemcf(order_data, args)
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("数据库中暂无数据")
|
|
|
|
|
|
|
|
elif args.run_itemcf_inference:
|
|
elif args.run_itemcf_inference:
|
|
|
recomments = run_itemcf_inference(args.product_code)
|
|
recomments = run_itemcf_inference(args.product_code)
|