如何基于菜品价格关联为图数据库Restaurant顶点添加expensive_meter属性
为缺失
expensive_meter属性的Restaurant顶点赋值方案 核心步骤
- 计算所有餐厅的菜品均价:遍历每个
Restaurant,通过OFFERS边关联的Item顶点,聚合计算菜品价格的平均值。 - 提取已有标注的样本数据:筛选出带有
expensive_meter属性的Restaurant,关联它们的菜品均价,建立价格与评分的对应关系。 - 构建评分映射规则:基于样本数据的分布,确定均价到
expensive_meter的映射逻辑(离散分档或连续拟合)。 - 批量赋值缺失属性:对无
expensive_meter的Restaurant,用其均价代入映射规则,计算并更新属性值。
算法逻辑
情况1:expensive_meter为离散值(如高/中/低)
- 统计已有标注餐厅的均价分布,按分位数划分区间(比如前30%为高,中间40%为中,后30%为低)。
- 对缺失属性的餐厅,根据其均价所在区间,匹配对应的
expensive_meter值。
情况2:expensive_meter为连续数值(如0-10的评分)
- 用已有标注餐厅的均价和
expensive_meter值训练线性回归模型,拟合出公式:expensive_meter = a * avg_price + b(a、b为拟合系数)。 - 对缺失属性的餐厅,代入自身均价到公式中,计算出对应的评分值。
代码示例(以Neo4j Cypher为例)
步骤1:计算所有餐厅的菜品均价(临时存储)
// 为每个餐厅计算均价,存入临时属性avg_item_price MATCH (r:Restaurant)-[:OFFERS]->(i:Item) WITH r, AVG(i.price) AS avg_price SET r.avg_item_price = avg_price;
步骤2:提取已有标注的样本数据
// 获取已有expensive_meter的餐厅及其均价 MATCH (r:Restaurant) WHERE EXISTS(r.expensive_meter) RETURN r.avg_item_price AS avg_price, r.expensive_meter AS score ORDER BY avg_price;
根据返回的结果,手动或通过脚本计算分位数(离散情况)或拟合线性回归系数(连续情况)。比如离散分档确定:均价>80为高,40-80为中,<40为低。
步骤3:为缺失属性的餐厅赋值(离散分档示例)
// 为无expensive_meter的餐厅赋值 MATCH (r:Restaurant) WHERE NOT EXISTS(r.expensive_meter) SET r.expensive_meter = CASE WHEN r.avg_item_price > 80 THEN "high" WHEN r.avg_item_price BETWEEN 40 AND 80 THEN "medium" ELSE "low" END;
步骤4:清理临时属性(可选)
// 删除临时的均价属性 MATCH (r:Restaurant) REMOVE r.avg_item_price;
连续数值拟合示例(结合Python脚本)
如果需要用线性回归,先导出样本数据:
MATCH (r:Restaurant) WHERE EXISTS(r.expensive_meter) RETURN r.avg_item_price AS x, r.expensive_meter AS y
将结果导出为CSV,用Python拟合:
import pandas as pd from sklearn.linear_model import LinearRegression # 读取导出的CSV数据 data = pd.read_csv("restaurant_scores.csv") X = data[['x']] y = data['y'] # 训练模型 model = LinearRegression() model.fit(X, y) # 得到系数a和截距b a = model.coef_[0] b = model.intercept_
然后用Cypher批量更新:
// 代入拟合的a和b值,计算并赋值 MATCH (r:Restaurant) WHERE NOT EXISTS(r.expensive_meter) SET r.expensive_meter = {a} * r.avg_item_price + {b};
(注:{a}和{b}替换为Python拟合得到的实际数值)
内容的提问来源于stack exchange,提问作者Matheus Farias
相关产品推荐
相关产品推荐

