返回作品
基于协同过滤的农作物推荐系统
创建于 2026 年 2 月 26 日
项目介绍
这是一个面向农户的智能农作物推荐平台,核心目标是回答一个实际的种植决策问题:“我这块地,下一茬种什么最合适?“系统不再只依赖通用的种植经验,而是把用户的地块条件、历史种植记录以及其他相似用户的种植经验放进同一个推荐模型里,输出个性化的作物候选列表。
项目采用前后端分离架构,后端使用 Python + Django REST Framework,前端使用 Vue 3,覆盖智能推荐、地块管理、作物库、种植记录、推荐分析、农业资讯和社区交流等完整业务模块,是一个从算法到业务闭环都可运行的完整系统。
推荐算法是项目的核心,集中实现在 backend/recommendations/services/ 目录下,分为三个相互配合的服务:协同过滤(Collaborative Filtering)、特征工程(Feature Engineering)和匹配度计算(Match Calculator),并针对冷启动、数据稀疏等真实场景设计了降级策略。
核心功能
- 隐式评分与特征工程:评分数据优先读取
UserCropRating显式评分;当数据不足时,从状态为已收获的种植记录自动生成隐式评分——按实际收益除以 2000 归一化到 1-5 分,默认 4.0。FeatureEngineer用MinMaxScaler归一化地块的土壤养分、pH、有机质、温度、降雨、无霜期、面积等数值特征,用LabelEncoder编码区域;作物特征归一化后拼接种植难度编码(easy/medium/hard 映射为 0/0.5/1),多地块用户取特征均值。 - 三维匹配度与推荐理由:
MatchCalculator独立计算土壤匹配度(pH 范围与氮养分配比)、气候匹配度(温度与降雨量适宜区间)和经济匹配度(亩产 × 市场价按 10000 元/亩归一化),三者平均得到综合匹配分,并自动生成”您所在地区气候条件非常适合种植""土壤养分匹配度高""经济效益良好""抗病虫害能力强""种植难度低,适合新手”等可读性推荐理由。 - 冷启动降级:当系统没有评分数据或找不到相似用户时,协同过滤结果为空,自动回退到基于内容的匹配度推荐;连地块信息也没有时,则返回作物库中的热门作物兜底,保证任何状态下页面都有推荐结果可展示。
- 推荐分析可视化:
Analysis.vue页面用 ECharts 呈现推荐得分 Top 6 柱状图、土壤/气候/经济匹配维度对比图、候选作物类别分布环形图,并汇总地块画像、历史记录、评分反馈、当前候选四类概览卡片,帮助用户理解推荐依据,评分反馈会回流到后续推荐逻辑。 - 完整业务支撑:作物库提供 12 种常见作物的基础数据(水稻、小麦、玉米、大豆、红薯、番茄、黄瓜、白菜、苹果、柑橘、油菜、棉花),配合地块管理、种植记录、农业资讯和社区交流模块,为推荐系统持续积累行为数据。
功能截图
用户端首页与智能推荐


推荐分析与地块管理


种植记录与作物库


农业资讯与社区


用户注册与管理端


