乡镇赶集摊位智能选址引擎
概述
本技能将GIS空间分析与回归预测模型融合应用于乡村集市场景,解决"人流大但不产单"的选址困境。通过采集历史摆摊数据(点位坐标、人流量、竞品分布、成交单数),构建"空间聚类 + 销量预测"双模型引擎:K-Means算法对人流热力数据加权聚类圈定高潜力消费区域,多元线性回归量化各因素对成交转化率的影响权重并输出各点位销量期望值,最终生成最优摆摊点位推荐地图。
触发条件
以下场景触发本技能:
- 乡镇赶集日摊位选址 / 摆摊点位推荐
- 集市人流热点分析 / 消费区域识别
- 地推营销点位优化 / 渠道下沉选点
- 流动摊位销量预测 / 摊位可见度评估
- 竞品分布对成交转化率影响分析
典型用户表述示例:
- "帮我分析XX集市的最优摆摊点位"
- "赶集日哪个位置摆摊销量最好"
- "我有历史摆摊数据,帮我做选址推荐"
- "分析一下这个集市的人流热点和销量预测"
数据要求
输入数据格式
历史摆摊数据以CSV文件提供,需包含以下字段(详见 references/data_schema.md):
| 字段名 | 类型 | 说明 | 示例 | |--------|------|------|------| | point_id | str | 点位唯一标识 | P001 | | market_name | str | 集市名称 | XX镇农贸市场 | | x_coord | float | 点位X坐标(经度或相对坐标) | 102.456 | | y_coord | float | 点位Y坐标(纬度或相对坐标) | 23.789 | | foot_traffic | int | 日均人流量(人次) | 1200 | | competitor_count | int | 50米内竞品摊位数量 | 3 | | competitor_distance | float | 最近竞品距离(米) | 25.5 | | visibility_score | float | 摊位可见度评分(0-10) | 7.5 | | time_period | str | 摆摊时段(morning/afternoon/all_day) | morning | | market_day_type | str | 赶集日类型(大集/小集/平日) | 大集 | | weather | str | 天气状况(sunny/cloudy/rainy) | sunny | | transactions | int | 日成交单数 | 85 |
若用户缺少部分字段,使用 assets/sample_data.csv 作为数据模板引导用户补充。缺少 transactions 字段时无法训练回归模型,须提示用户提供至少含成交结果的历史数据。
工作流程
步骤 1:数据加载与预处理
读取用户提供的CSV数据文件,执行以下操作:
- 校验数据完整性(必填字段是否齐全)
- 缺失值填充(数值型用中位数,分类型用众数)
- 分类变量编码(time_period → one-hot, market_day_type → ordinal, weather → one-hot)
- 特征标准化(Z-Score标准化用于聚类,Min-Max用于回归)
- 异常值检测与处理(IQR方法识别并截断)
运行脚本:
python scripts/main_analysis.py --data <csv_path> --step preprocess
步骤 2:空间聚类分析(K-Means人流热点识别)
基于K-Means算法对人流热力数据加权聚类,圈定高潜力消费区域:
- 以点位坐标(x_coord, y_coord)为空间维度,以foot_traffic为权重构建加权特征矩阵
- 使用肘部法(Elbow Method)确定最优K值(默认搜索范围3-8)
- 执行加权K-Means聚类,将所有点位划分为K个簇
- 计算各簇的人流密度指数(簇内总人流 / 簇覆盖面积)
- 按人流密度指数降序排列,标注Top 2簇为"高潜力消费区域"
- 输出聚类结果:各簇中心坐标、覆盖范围、人流密度排名
运行脚本:
python scripts/main_analysis.py --data <csv_path> --step cluster
或直接调用聚类模块:
python scripts/spatial_clustering.py --data <csv_path> --k <auto|3-8> --output <result.json>
步骤 3:销量回归预测
构建多元线性回归模型,预测各候选点位的预期销量:
- 以 foot_traffic、competitor_count、competitor_distance、visibility_score、time_period(one-hot)、market_day_type(ordinal)、weather(one-hot) 为自变量
- 以 transactions 为因变量
- 划分训练集/测试集(80/20),训练多元线性回归模型
- 输出回归方程各系数及截距,量化各因素对成交转化率的影响权重
- 计算模型评估指标:R²、Adjusted R²、RMSE、MAE
- 对所有候选点位(含未摆摊过的新点位)进行销量预测
- 按预测销量降序排列,输出点位排名
运行脚本:
python scripts/main_analysis.py --data <csv_path> --step predict
或直接调用预测模块:
python scripts/sales_prediction.py --data <csv_path> --output <predictions.json>
步骤 4:综合推荐与可视化
整合聚类结果与销量预测,生成最优摆摊点位推荐地图:
- 合并聚类标签与预测销量,计算综合评分(销量预测权重70% + 人流密度排名权重30%)
- 按综合评分降序排列所有候选点位
- 标注Top 3点位为"最优推荐点位"
- 生成交互式HTML推荐地图:
- 散点图展示所有点位,按聚类簇着色
- 热力图叠加人流密度
- 最优推荐点位高亮标注(红色星标)
- 侧栏展示点位详情表(排名、坐标、预测销量、所属簇、推荐理由)
- 输出推荐报告摘要(Markdown格式)
运行脚本:
python scripts/main_analysis.py --data <csv_path> --step recommend
或直接调用可视化模块:
python scripts/generate_recommendation.py --cluster <cluster.json> --prediction <predictions.json> --output <recommendation.html>
一键全流程
直接运行完整流程(预处理 → 聚类 → 预测 → 推荐地图):
python scripts/main_analysis.py --data <csv_path> --market <market_name> --output <output_dir>
脚本说明
| 脚本 | 用途 | 输入 | 输出 |
|------|------|------|------|
| scripts/main_analysis.py | 主编排器,串联完整流程 | CSV数据路径 | HTML地图+JSON结果+MD报告 |
| scripts/spatial_clustering.py | K-Means加权空间聚类 | CSV数据路径 | 聚类结果JSON |
| scripts/sales_prediction.py | 多元线性回归销量预测 | CSV数据路径 | 预测结果JSON+模型指标 |
| scripts/generate_recommendation.py | 综合评分与可视化推荐 | 聚类JSON+预测JSON | HTML推荐地图 |
Python 环境依赖
本技能脚本依赖以下Python包:numpy、pandas、scikit-learn、matplotlib。运行脚本前确保已安装:
pip install numpy pandas scikit-learn matplotlib
参考文档
references/methodology.md— 空间聚类与回归预测的详细方法论、数学公式、参数调优指南references/data_schema.md— 完整数据字段规范、采集标准、编码规则
输出产物
技能完整运行后产出以下文件:
- 推荐地图(HTML)— 交互式可视化地图,含散点图、热力图、推荐点位高亮
- 聚类结果(JSON)— 各点位簇标签、簇中心坐标、人流密度排名
- 预测结果(JSON)— 各点位预测销量、回归系数、模型评估指标
- 推荐报告(Markdown)— 排名摘要、关键发现、行动建议
使用限制
- 历史数据量少于30条记录时,回归模型可靠性降低,须提示用户
- 仅支持单集市分析,跨集市对比需分别运行
- 预测基于历史模式,重大环境变化(道路改造、新竞争者入驻)后须重新采集数据
- 天气等外部因素使用历史均值作为基准预测,极端天气日需人工修正
Scan to join WeChat group