ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SpringBoot+Vue社区报修智能预测系统:从数据库到机器学习全栈实战

SpringBoot+Vue社区报修智能预测系统:从数据库到机器学习全栈实战 答辩那天评委老师盯着我演示页面上那个“预测报修量”的折线图问了一句话“你这个系统说到底是个报修管理系统智能预测体现到底在哪里”我当时愣了一下然后把这套系统的数据链路从头讲了一遍——住户提交报修后产生的工单数据、维修进度、评价反馈不再只是躺在数据库里的“流水账”而是会进入一个预测模块去推算某个设备未来的故障概率、某个楼栋接下来一段时间的报修趋势。老师点了点头这个课题就算过了。回想起来这套基于SpringBoot和Vue的社区设备报修住户反馈智能预测系统真正让我能撑住场面的不是堆砌了多少技术栈而是把“报修、反馈、预测”三件事串成了一条完整的闭环而且每一步都有论文可写、有数据可查、有功能可演示。这篇文章我就把整个设计思路、技术选型、数据库设计、预测模块的落地方式、论文写作重点和踩过的坑一次性说清楚给正在做类似毕设或者想复刻这套系统的朋友一份可以直接参考的作业。1. 需求分析才是论文的第一道坎——这个课题到底在解决什么很多同学做管理系统开题报告里写着“物业管理效率低下、传统报修流程繁琐”但真正问起来到底低在哪、繁在哪却说不出一二三。我这个题目最初确定之前先去翻了社区物业的实际流程传统做法是住户发现楼道灯坏了、电梯异响、水管漏水先打电话给物业前台前台用纸质工单登记再人工通知维修师傅师傅修完回来口头汇报这件事基本就算结束了。住户不知道维修进度物业不知道师傅有没有真去修更没有一个地方记录“哪个小区哪个设备修过几次、每次花了多久”。这个系统要解决的就是这三层问题住户层面从打电话变成在线提单输入设备位置、故障描述、上传照片全程可以看到工单状态。物业维修层面工单自动进入待受理列表管理员指派给维修工维修工更新处理状态完工填写维修结果。管理层/决策层面所有工单和评价数据沉淀下来形成设备故障台账系统基于历史数据去预判“哪些设备是高频故障源”“未来一个月报修量大概多少”。这套逻辑写进论文第一章就构成了需求的完整动机。评阅老师最反感的是那种“用户说要有报修功能所以做了报修功能”的废话式需求描述而你要呈现的是现状痛点是怎么调研到的、每类用户角色的核心诉求是什么、系统边界划在哪。我当时把需求分成了几类论文里用表格梳理得很清楚住户角色在线报修、报修进度查看、维修结果确认、满意度打分与文字反馈、个人报修记录管理。维修工角色查看被派工单、更新处理状态、填写维修日志。物业管理员角色设备台账管理、工单派发与流转管理、住户反馈管理、数据统计与预测看板。系统非功能性需求响应时间页面打开控制在2秒内、并发支持社区规模按5000户设计、数据安全性住户敏感信息加密存储。这里有个容易被忽略的点需求文档里必须要有“智能预测”的位置。如果你把预测当成一个附加的Demo功能来写论文会显得拼凑如果把它定义成“基于历史工单数据的辅助决策模块”那整个系统的格局就不一样了它属于数据应用层和报修业务层是上下游关系。这是这篇论文和普通管理系统的本质区别。2. 大体架构SpringBootVue前后端分离为什么是“安全牌”技术选型这块论文里要能给出理由不能只甩出“用了SpringBoot和Vue”就完事。我个人的经验是这类课题选SpringBootVue有三个核心原因生态成熟、招聘认知度高、遇到问题搜得到的解决方案最多。对一个需要按时毕业的学生来说这三条比“技术最新颖”重要得多。2.1 后端框架选择与工程结构后端我选择SpringBoot 2.7.x版本配合MyBatis-Plus做持久层操作。SpringBoot 3.x当时也出来了但部分三方依赖兼容性还不够稳定毕设阶段没必要冒险。JDK用的1.8和SpringBoot 2.7的搭配最稳妥答辩现场不用跟环境配置较劲。工程结构上我按标准的包分层来做论文里的软件设计章节也有东西可画com.community.repair ├── controller // 接口层接收前端请求 ├── service // 业务逻辑层 ├── mapper // 数据访问层 ├── entity // 实体类 ├── dto // 数据传输对象 ├── vo // 视图对象返回给前端 ├── config // 配置类跨域、拦截器、预测模型加载 ├── utils // 工具类 └── predict // 智能预测模块特征计算、模型调用后端核心依赖清单也列一下新手直接照抄依赖用途备注spring-boot-starter-webWeb接口与内置Tomcat必选mybatis-plus-boot-starter数据库ORM、分页插件和SpringBoot 2.7配合稳定mysql-connector-javaMySQL驱动或换成8.x版本lombok简化实体类代码提升开发效率spring-boot-starter-validation参数校验后端接口健壮性hutool-all工具集日期处理、随机数据生成swagger或springdoc接口文档如果时间紧可以不用2.2 前端Vue工程与主要依赖前端用的Vue 2 Element UI ECharts。用Vue 2不是因为它新而是和Element UI的配套最成熟网上的案例代码一抓一大把遇到问题能快速搜到。Vue 3 Element Plus也完全可以但对新手来说从Vue 2入手更容易理解路由、组件、状态管理这些基础概念。前端工程结构这样组织vue-front ├── src │ ├── api // axios接口封装 │ ├── assets // 静态资源 │ ├── components // 公共组件 │ ├── router // 路由配置 │ ├── store // Vuex状态管理 │ ├── views // 页面 │ │ ├── resident // 住户端 │ │ ├── worker // 维修工端 │ │ └── admin // 管理员端 │ ├── App.vue │ └── main.js └── vue.config.js // 代理配置路由这块建议用动态路由思路根据登录用户的角色动态注册可访问的页面。比如住户进入系统后导航栏只显示“我要报修”和“我的报修记录”维修工进入后显示“待处理工单”和“我的维修历史”管理员则是全量菜单加预测看板。这类设计在论文的功能模块章节能写出层次感代码上通过Vue Router的addRoutes或路由守卫beforeEach实现起来也简单。前后端分离模式下开发环境用Vue CLI的代理转发解决跨域vue.config.js里这样配置module.exports { devServer: { proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } } }生产环境则把前端打包成静态资源交给SpringBoot统一托管或者用Nginx反向代理。关于这个后面避坑部分我再细说。3. 数据库设计——报修、反馈、预测三件事如何落到同一套表结构数据库是这类系统的地基。我见过很多同学一上来就建表结果做到后面发现缺字段、表关联混乱返工成本极高。我自己在建表前先画了ER图梳理清楚了核心实体之间的关系然后才动手。3.1 核心表清单系统最核心的表有这么几张住户表resident居民基本信息账号、姓名、楼栋号、单元号、手机号。设备表device设备台账设备名称、类型、位置、安装日期、厂商。维修工表worker维修人员信息工号、姓名、技能类型、当前状态。报修工单表repair_order整个系统的业务主线记录谁报修的、哪个设备坏了、什么故障描述、流转状态。维修记录表repair_record维修工填写的处理详情、用料、耗时。反馈评价表feedback住户对维修结果和效率的评分与评论这是预测模块的重要数据来源之一。通知公告表notice系统通知比如停水停电信息。预测结果表prediction_result存储预测模块产出的结果方便前端看板展示历史预测记录。3.2 工单表字段设计——状态流转的载体报修工单表是核心中的核心字段设计直接决定业务流程能不能走通。我当时的设计如下CREATE TABLE repair_order ( order_id bigint NOT NULL AUTO_INCREMENT COMMENT 工单ID, order_no varchar(32) NOT NULL COMMENT 工单编号如BX202405150001, resident_id bigint NOT NULL COMMENT 报修住户ID, device_id bigint DEFAULT NULL COMMENT 关联设备ID可为空住户报修时选填, device_location varchar(100) NOT NULL COMMENT 故障位置描述, fault_description varchar(500) NOT NULL COMMENT 故障描述, fault_type tinyint DEFAULT NULL COMMENT 故障类型1漏水/2电路/3电梯/4门禁/5其他, image_url varchar(255) DEFAULT NULL COMMENT 报修图片地址, priority tinyint NOT NULL DEFAULT 2 COMMENT 紧急程度1紧急/2普通/3低, status tinyint NOT NULL DEFAULT 1 COMMENT 状态1待受理/2已派单/3维修中/4待验收/5已完成/6已取消/7已评价, assignee_id bigint DEFAULT NULL COMMENT 派单维修工ID, admin_id bigint DEFAULT NULL COMMENT 受理管理员ID, appointment_time datetime DEFAULT NULL COMMENT 预约上门时间, accept_time datetime DEFAULT NULL COMMENT 受理时间, assign_time datetime DEFAULT NULL COMMENT 派单时间, start_time datetime DEFAULT NULL COMMENT 维修开始时间, finish_time datetime DEFAULT NULL COMMENT 维修完成时间, complete_time datetime DEFAULT NULL COMMENT 住户确认完成时间, create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, is_deleted tinyint DEFAULT 0 COMMENT 逻辑删除, PRIMARY KEY (order_id), KEY idx_status (status), KEY idx_resident (resident_id), KEY idx_device (device_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT报修工单表;这张表每个字段都不是随便定的。status字段串起了业务流转每个状态变化都对应一个真实动作和相应的时间戳论文里画状态图时只需要对照这张表就能画出来。维修耗时统计finish_time减去accept_time也为预测模块提供了特征数据。3.3 反馈评价表——住户反馈数据的闭环反馈表的设计同样重要。我建议把它和工单表分开存为什么从系统逻辑上看一个工单可能多次沟通反馈住户补充留言、维修工回复如果都写在工单表里会产生大量冗余字段。CREATE TABLE feedback ( feedback_id bigint NOT NULL AUTO_INCREMENT, order_id bigint NOT NULL COMMENT 关联工单ID, resident_id bigint NOT NULL COMMENT 住户ID, rating tinyint NOT NULL DEFAULT 5 COMMENT 满意度评分1-5, content varchar(500) DEFAULT NULL COMMENT 文字反馈内容, feedback_type tinyint DEFAULT NULL COMMENT 反馈类型1维修质量/2服务态度/3处理速度/4其他, create_time datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (feedback_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT住户反馈评价表;重点来了这张表的数据可以用于预测模块的“评分预测”或“满意度分析”。举个例子如果某个维修工连续处理的工单评价平均低于3分系统就能给管理员一个提醒。这类分析功能写在论文里比单纯“增删改查”高出好几个层次。3.4 为智能预测预留的数据基础预测模块需要数据最好从一开始就在数据库设计里考虑到。我当时在设备表里增加了这两个字段的思路——maintenance_count该设备累计维修次数和last_repair_time最近一次维修时间这两个字段在日常报修表单提交流程中同步更新为预测提供即时特征。虽然也可以用SQL动态统计但预聚合字段能减少预测接口的查询压力论文中的数据流逻辑也更清晰。4. 智能预测模块——从“展示型AI”到能答辩的算法落地这个模块是整个系统的创新点也是最容易在答辩时被追问的地方。我把它设计成两个预测方向一个是面向设备的故障概率预测一个是面向社区的报修量趋势预测。两者各有侧重但共用一套历史工单数据。4.1 预测什么两个落地的场景设备故障概率预测针对每一个设备或设备类型基于它过去的维修频次、运行年限、故障类型分布、季节因素等预测未来一段时间内再次发生故障的概率。这是一个典型的二分类问题“会坏”和“不会坏”或者估算“预计多久之后可能再报修”。报修量趋势预测基于过去3-6个月的报修工单数量预测下个月整体或各楼栋的报修单量。这用于物业人员排班报修高峰月提前增派人手。这是一个时间序列预测或回归问题。4.2 特征工程与数据来源没有历史数据怎么办这是所有做智能预测类毕设都会遇到的冷启动问题。我的做法是写一个数据模拟脚本按照社区常见故障规律生成12个月的仿真工单数据约2000-3000条并注入一定随机噪声让它看起来更真实。特征包括设备类型电梯/照明/水管/门禁等设备使用年限近90天维修次数季节春/夏/秋/冬月平均维修耗时同类设备平均故障间隔住户反馈平均评分论文里这块要写清楚哪些是原始字段直接映射的哪些是经过统计聚合生成的。我当时用Python pandas清洗数据然后训练模型。4.3 算法选择为什么我不建议你一上来就上深度学习说句实话社区报修数据量级完全不需要深度学习经典机器学习模型效果更好、训练更快、也更好解释。我用的是随机森林分类器来做设备故障概率预测用线性回归或轻量梯度提升来预测报修量。随机森林的优势在答辩时也特别好讲它可以输出特征重要性告诉观众“对设备故障影响最大的因素是最近维修次数和使用年限”这种可解释性是深度学习给不了的。4.4 SpringBoot工程怎么调用模型这里给出一条务实的技术路径把模型训练和业务系统解耦训练阶段Python里训练好随机森林模型用joblib序列化保存成.pkl文件放进后端项目资源目录。预测接口加载一次模型之后反复调用。Java侧不用重新训练只需做特征拼接和调用。我在后端的预测服务里写了一个核心方法Service public class PredictService { // 加载随机森林模型文件类路径下的 model/model.pkl private RandomForestModel randomForestModel; PostConstruct public void init() { // 通过Python侧提供的HTTP微服务方式也可 // 或者直接用Java调用Python脚本方式ProcessBuilder } public Double predictDeviceFaultRate(DeviceFeatureDTO feature) { // 拼装特征向量设备类型、使用年限、近90天维修次数... double[] features { feature.getDeviceTypeCode(), feature.getDeviceAge(), feature.getRepairCount90d(), feature.getSeasonCode(), feature.getAvgRepairHours() }; // 调用Python模型服务获得概率或以朴素贝叶斯/逻辑回归方式在Java内复现 Double probability callModelService(features); return probability; } }具体工程落地有两种方式一种是用ProcessBuilder调用Python脚本简单直接但性能一般另一种是把Python预测部分封装成一个独立的Flask/FastAPI服务SpringBoot通过HTTP调用。我采用了第二种因为答辩时可以展示“微服务拆分思想”而且流量的瓶颈在数据库而不在模型服务独立服务的部署结构在论文里画架构图也更美观。如果你不想引入Python还有一个纯Java方案用Apache Spark MLlib的Java API或Weka这样的Java机器学习库来训练模型。当时我对比过优点是环境单一缺点是对数学原理不熟的阶段修改模型参数做实验会比较吃力。我更推荐Python训练服务化调用的路线两边各发挥优势。# 启动Python预测服务 python model_server.py --port 5001SpringBoot里通过RestTemplate或OpenFeign调用。核心代码只有几行RestTemplate restTemplate new RestTemplate(); String url http://localhost:5001/predict?deviceType2age5repairCount90d3; Map result restTemplate.getForObject(url, Map.class); Double faultRate (Double) result.get(probability);这两年还有人在SpringBoot里集成ONNX Runtime把模型转成ONNX格式后做推理性能和跨语言支持都不错感兴趣的可以试试不过时间紧就不必折腾了。5. 核心业务模块的代码级实现——报修流程怎么从Vue页面走通到MySQL这一章我挑四个关键节点展开讲报修提单、派单流转、住户确认与反馈、预测看板。这是整个系统的主干流程也是论文里最有东西可写的部分。5.1 住户报修提单前端表单后端接口链路住户端页面用了Element UI的表单组件核心是一个el-form包含故障位置、故障描述、图片上传、预约时间。图片上传我单独说一句——项目里用MinIO做对象存储把图片上传到MinIO服务的repair-images桶里后端只保存返回的URL。为什么不用本地路径因为SpringBoot打包后本地路径的健壮性很差图片多了项目体积爆炸而且MinIO的对接代码网上例子很多毕设项目里加上它技术广度也有提升。前端提交的核心代码submitRepair() { this.$refs.form.validate((valid) { if (!valid) return const formData { deviceLocation: this.form.deviceLocation, faultDescription: this.form.faultDescription, imageUrl: this.uploadedUrl, priority: this.form.priority } repairApi.submitRepair(formData).then(res { this.$message.success(报修提交成功请等待处理) this.$router.push(/resident/records) }) }) }后端Controller接收PostMapping(/api/repair) public Result submitRepair(RequestBody Valid RepairSubmitDTO dto, RequestAttribute(currentUser) Resident resident) { String orderNo repairService.createOrder(dto, resident); return Result.success(报修工单创建成功, orderNo); }这里有个细节值得在论文里提一下工单编号生成策略。我用的是“BX 年月日 四位流水号”比如BX202405150001为的是定时任务生成和人工排查时方便追踪。流水号用Redis的INCR命令自增保证并发场景下不重复。5.2 工单流转一个状态机如何保证业务不出错工单状态的每次变更我都用的是Transactional嵌套更新状态机的迁移规则固化在Service层public void assignOrder(Long orderId, Long workerId) { RepairOrder order getById(orderId); // 状态必须是待受理才能派单 Assert.state(order.getStatus() OrderStatus.PENDING, 当前状态不可派单); order.setStatus(OrderStatus.ASSIGNED); order.setAssigneeId(workerId); order.setAssignTime(new Date()); updateById(order); }这种代码在答辩时被问“为什么不用枚举判断状态”时可以回答“状态迁移规则集中在Service层管理避免Controller绕过校验直接改状态”逻辑上就站得住。维修工端App/H5页面更新维修进度时也调用同一个服务方法保证状态流的唯一入口。住户在“我的报修记录”页面看到的进度就是实时读取的status字段对应的中文标签。5.3 住户确认与评价闭环的关键一步维修工点击“完工”后工单进入“待验收”状态住户看到自己的工单变成待验收可以去确认完成再跳出一个评价弹窗。评价维度包括响应速度、维修质量、服务态度每项1-5分下面可写文字反馈。这部分数据写进feedback表同时也是预测模块的特征数据源之一。这里我加了一个小功能论文里很加分如果住户连续两次给出低分低于3分系统自动弹出一条问卷追问原因并给管理员发送一条预警消息。虽然实现不复杂就是查询最近两条反馈记录然后阈值判断但在“住户反馈智能分析”这个点上比单纯把评论列表展示出来深入得多。5.4 预测看板ECharts展示预测结果管理端页面用ECharts画了两张图。第一张是“未来30天报修量趋势预测”折线图横轴是日期纵轴是预测报修量用深浅颜色区分历史实际值和预测值。第二张是“高故障风险设备Top10”横向条形图每根柱子代表一个设备长度对应当前预测故障概率。后端提供两个接口GET /api/predict/trend?days30 GET /api/predict/device-risk?top10前端在管理员访问仪表盘时拉取数据再用ECharts渲染。展示效果好的同时论文的系统测试章节也有了“应用效果验证”的数据支撑。6. 论文怎么写才不浪费这套系统——结构、图表、答辩问题准备很多同学系统做得不错论文却写得像流水账。我总结一套针对“SpringBootVue预测”这类题目的论文写作侧重点供参考。6.1 论文目录结构与各部分写作重心我的论文目录大致是第一章 绪论研究背景、国内外研究现状、研究内容、论文结构。第二章 相关技术介绍SpringBoot、Vue、机器学习基础、MinIO、MySQL。第三章 系统需求分析可行性分析、功能需求、非功能需求、用例图。第四章 系统总体设计架构图、功能模块划分、数据库设计、接口设计。第五章 系统详细设计与实现每个模块的核心类、流程图、关键代码、界面截图。第六章 智能预测模块的设计与实现特征工程、模型训练、模型服务部署、验证。第七章 系统测试功能测试用例设计、性能测试、测试结果分析。第八章 总结与展望。关键点不要把技术介绍写成长篇大论SpringBoot/Vue的简介两三页即可第五、六章才是论文的重头戏这两章写得越具体老师越能感受到工作量。6.2 三件套图表ER图、流程图、系统架构图论文查重和评阅意见里“缺少图”是常见负面评价。我画了这几张图每一张都在论文里起到了实质作用系统总体架构图从Vue前端到SpringBoot后端再到MySQL与预测Python服务三层结构一目了然。报修业务流程图从住户提单到管理员派单、维修工处理、住户验收评价的完整泳道图。数据库ER图用Navicat或PDMan导出的标准ER图标注主键外键关系。智能预测模型训练流程图数据采集→清洗→特征工程→训练→评估→服务化部署。另外论文里的关键代码块注意排版和注释不用贴大段完整代码贴核心方法加上中文注释就够了。6.3 答辩高频问题与应对思路我根据自己的答辩和旁听经验整理了这样一组高频问题高频问题应对思路为什么选SpringBoot而不是SSH/SSM自动化配置、内嵌服务器、生态成熟、与Vue分离开发效率高你的预测模型精度怎么评估的给出数据集划分方式训练集70%、测试集30%说出准确率、F1值哪怕是通过仿真数据得到的也要说得具体冷启动时没有历史数据怎么办说明你用了仿真数据生成方案并指出真实运行后预测精度会逐步提升这是迭代式优化前后端分离怎么解决跨域和安全认证开发环境代理生产环境Nginx密码加密存储登录用JWT做身份认证系统最大的难点在哪里说预测模块的工程化落地Python模型如何与Java业务集成以及工单状态机的边界处理7. 从开发到部署的避坑实录——版本、跨域、打包、图片存储最后一个重点章节说几个我开发过程中真实踩过、也见过很多同学踩的坑。如果你照着这套系统做这几条能帮你省下好几天时间。7.1 SpringBoot版本与JDK版本不匹配SpringBoot 3.x要求JDK 17起步而很多学校机房和教材默认JDK 8。如果项目创建时选错了版本启动会直接报Invalid JDK version之类的错误。我的建议是数据库、代码都是向下兼容的直接用SpringBoot 2.7.x JDK 8除非你要用到SpringBoot 3才支持的特性否则没有升级的必要。CPU性能弱一点的旧电脑跑JDK 8也更流畅。7.2 Vue打包后怎么放进SpringBoot开发完成后需要把前端打包有很多同学直接双击dist目录下的index.html结果页面白屏。原因很简单Vue构建后的路由是History模式直接双击打开时没有服务器来解析路由。两种常规做法做法一把前端dist目录拷贝到SpringBoot的src/main/resources/static下再配置一个通配路由把未知请求转发到index.html这样前后端只需一个端口。Configuration public class WebMvcConfig implements WebMvcConfigurer { Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController(/{spring:[a-zA-Z]}/**) .setViewName(forward:/index.html); } }做法二用Nginx部署前端反代后端接口。Nginx配置里最关键的是location /api转发到后端端口。我个人更推荐这种做法工程上更正规论文里也能多写一节部署方案。7.3 跨域问题一锅端排查前后端分离开发时最常见的报错就是Access to XMLHttpRequest at ... from origin ... has been blocked by CORS policy。我用的是全局CORS配置后端的WebMvcConfigurer里注册跨域映射。如果用了Spring Security还要处理预检请求放行问题不然OPTIONS请求会被拦截。这块经常被忽略等部署上才发现联调失败排查顺序先看浏览器Network里有没有OPTIONS请求再看后端日志有没有拦截到。7.4 Docker部署集成为了让论文的“系统部署”章节有内容我最后用Docker Compose把MySQL、SpringBoot后端、Vue前端Nginx、MinIO、Python预测服务五个容器编排起来一条命令启动整个系统version: 3 services: mysql: image: mysql:8.0 environment: MYSQL_DATABASE: community_repair MYSQL_ROOT_PASSWORD: root123 ports: - 3306:3306 backend: build: ./backend depends_on: - mysql - predict-service ports: - 8080:8080 frontend: build: ./frontend ports: - 80:80 depends_on: - backend minio: image: minio/minio command: server /data ports: - 9000:9000 predict-service: build: ./predict ports: - 5001:5001能用Docker跑通整套系统的学生答辩时绝对是一个亮眼的加分项。哪怕老师不要求我建议你也准备一份因为线上演示时环境出问题的概率永远比你想象的高。最后的几点实在话做这套系统加写论文我前后花了大约两个半月其中前两周全部用在需求分析和数据库设计上真正敲代码的时间反而不是最长的。这中间最大的感受是这类管理系统不难但要把“预测”这个点做成真正的亮点功夫都在数据链路的设计上——从什么时候开始采集数据、哪些字段能成为特征、预测结果怎么反馈给业务每一步都要想清楚。如果你是准备拿它当毕设一定预留至少一周时间专门调预测模块的效果和打磨答辩PPT。预测结果不用做到100%准确但你要能讲清楚误差产生的原因和改进方向。最后再分享一个小技巧答辩演示时提前准备好一组真实的历史数据跑一遍预测流程让评委看到“输入工单→输出预测曲线”的完整过程这比任何文字说明都有说服力。
返回列表