豆瓣电影评分分析与预测项目:从数据采集到可视化建模的完整实践

📅 2026/7/2 17:44:50
豆瓣电影评分分析与预测项目:从数据采集到可视化建模的完整实践
有需要本项目的代码、文档、完整资源或者需要部署调试的朋友可以私信博主。这次整理的是一个围绕豆瓣电影数据展开的完整数据分析项目。起初做这个题目并不是为了单纯跑几个图表而是想把真实网站数据采集、字段清洗、可视化分析、评论文本处理和评分预测模型串成一条完整链路。电影评分看起来只是一个数字但它背后包含了影片类型、导演阵容、上映时间、国家地区、用户参与度和评论情绪等多种因素。把这些因素拆开看再重新放进模型里验证是这个项目最有意思的地方。最终形成的项目包括电影详情数据采集、热门电影短评与影评采集、数据预处理、MySQL存储、PyEcharts可视化展示、机器学习评分预测和Optuna参数优化等内容。整体效果更像一套面向电影数据的分析工作流前面负责把数据拿到并整理干净中间负责把规律展示出来后面负责用模型做评分预测。对于学习Python爬虫、数据分析、可视化和机器学习建模的同学来说这个项目的覆盖面比较完整也比较适合作为综合实践案例。一、为什么选择电影评分数据做分析电影数据天然适合做数据分析。一方面它的字段非常丰富既有结构化字段例如评分、评价人数、片长、年份、国家地区、语言、类型也有非结构化字段例如剧情简介、短评、影评文本。另一方面电影评分带有明显的用户行为属性既受作品质量影响也受传播热度、文化背景和观众期待影响。因此只看平均分是不够的还要把评分放到类型、时间、地区和评论语境中一起观察。豆瓣电影平台积累了大量用户评分与评论信息适合作为电影口碑分析的数据入口。本项目没有停留在“爬取数据—画图展示”的简单流程而是把数据采集、数据标准化、图表解读和模型预测结合起来。通过这个流程可以比较直观地看到哪些类型更容易获得高分哪些国家和语言的作品更活跃电影上映时间是否存在档期特征热门影片的评论中用户最关心什么以及机器学习模型能否从这些字段中学习到评分规律。二、整体技术路线与项目流程整个项目可以拆成四层第一层是数据采集层通过Python请求接口、解析页面和处理异步数据获取电影详情、短评和影评第二层是数据治理层完成缺失值处理、字段拆解、时间格式统一、片长单位转换、演员人数提取和重复记录合并第三层是分析展示层使用PyEcharts把评分分布、类型结构、国家语言、时间趋势、评价人数和评论词云展示出来第四层是预测建模层将清洗后的数据转为模型可识别的特征分别训练线性回归、决策树、随机森林、梯度提升回归和CatBoost模型并引入Optuna进行自动化调参。这样设计的好处是每一层都能独立运行也能向后衔接。采集到的原始数据不会直接进入模型而是先进入清洗和标准化流程清洗后的数据既可以存入MySQL也可以导出CSV和Excel用于人工检查可视化结果不只是“好看”而是为后面的特征工程提供依据模型评估也不只看单一指标而是结合R²、RMSE、MAE等指标判断模型是否真正可用。图1电影详情数据采集流程展示三、数据采集从电影详情到热门评论电影详情数据的采集是项目的第一步。豆瓣页面存在动态加载的情况很多数据并不是直接写在HTML页面中而是通过接口和JSON数据包返回。为此我先分析页面请求规律再通过构造请求参数批量访问数据接口。采集过程中加入了请求头、Cookie和随机延时策略尽量模拟正常用户浏览行为避免高频请求导致采集中断。电影详情部分主要提取电影ID、电影名称、导演、演员、剧情类型、制片国家、语言、上映时间、片长、评分、评分人数、封面链接和简介等字段。采集过程中采用边采集边保存的方式把已获取的数据实时写入CSV文件即使程序中途异常停止前面已经采集到的数据也不会丢失。最终整理得到1.6万余条电影详情数据为后续分析提供了足够的数据基础。为了让项目不只停留在结构化字段分析我还单独增加了热门电影短评和影评采集模块。短评部分关注用户昵称、评论时间、星级、IP属地、有用数和评论内容影评部分则需要进一步访问异步接口获取完整文本。为了降低公开展示中的信息暴露文章中的原始评论明细没有直接展开只保留流程图和词云结果用来展示文本分析思路。图2热门电影短评与影评采集流程展示四、数据清洗把“能爬到”变成“能分析”原始数据拿到以后并不能马上进入可视化和模型训练。网页数据常见的问题包括字段缺失、格式不统一、单位混杂、列表字段无法直接计算、文本字段过长、符号影响数据库导入等。这个项目的数据清洗重点放在几个方面一是处理重复值和关键字段空值二是把电影片长中的“分钟”等中文单位去掉只保留可计算的数值三是统一上映时间格式并从日期中继续拆出年份、月份、星期等时间维度四是把演员字段拆解后统计演员人数作为一个新的数值特征五是把剧情简介、影评、短评等长文本单独导出后续用于词云分析。在数据库存储前还对电影名称中的特殊符号做了替换减少导入MySQL时的编码和分隔风险。对于电影名称重复的情况按电影名称分组后保留评价人数较多的记录使每部电影在主分析表中只保留相对代表性的一条数据。这样的处理方式让数据结构更清晰也减少了后续统计中的重复计数问题。图3数据读取、字段衍生与清洗过程展示五、可视化分析把电影市场规律画出来1.评分与类型结构评分分布是最先观察的指标。处理后的数据中电影评分主要集中在7到8分区间这部分影片数量最多8到9分区间也有较多作品说明平台中优质影片占有一定比例9分以上的极高分影片数量明显减少说明观众对顶级作品的评判比较严格。低分影片数量从6分以下逐渐减少整体呈现出中间集中、两端偏少的分布状态。类型分布方面剧情片数量最为突出喜剧、爱情、动作、科幻、悬疑等类型也占据稳定比例。进一步比较不同类型的平均分可以看到音乐、动画、传记、历史等类型往往更容易取得较高评价而部分商业化较强的类型平均分波动更明显。这个结果说明电影类型不仅影响观众选择也会影响评分预期。观众在看一部艺术表达更强的作品时评价标准与观看商业娱乐片时并不完全相同。图4电影评分区间与类型占比展示图5类型平均评分与电影时长分布展示2.地域、语言与文化差异从国家和地区维度看中国、美国、日本等国家或地区的电影数量较多说明这些市场在数据集中具有较高活跃度。英语电影数量明显领先中文、日语、韩语、法语等语言也形成了相对清晰的梯队。电影语言其实不只是文本字段它背后对应的是文化传播范围、受众规模和作品进入平台评分体系的可能性。在高分电影分析中不同国家的表现并不完全取决于数量。部分国家虽然产量不算最高但进入高分区间的作品质量很突出。这提醒我在分析电影数据时不能简单用数量代表影响力还要同时看评分、评价人数和高分作品比例。数量说明市场活跃度高分说明作品质量或口碑沉淀评价人数则代表传播广度。图6国家地区与语言分布展示3.时间维度与档期规律时间维度是电影项目里很值得挖掘的一条线。我分别从年份、月份和周次角度观察电影上映节奏及评分变化。近十年的评分趋势显示不同类型影片的平均分并不是完全平稳的而是会随年份出现起伏。剧情片整体更稳定动作片波动相对明显。月份维度上9月、12月、5月等时间点上映数量较高体现出秋季档、贺岁档和节假日档期的集中效应。后续建模时我没有简单把日期当作普通字符串处理而是结合电影市场规律构造“档期”特征。比如元旦、春节、劳动节、国庆、暑期档、圣诞档等都被转换为具有业务含义的类别特征。相比单纯使用月份这种处理更贴近真实发行场景也更容易让模型捕捉时间节点对评分的潜在影响。图7时间维度下的评分趋势与上映分布展示4.评价人数与观众关注度评分反映口碑评价人数反映热度。项目中单独统计了不同国家、不同类型的评价人数分布。美国和中国电影的累计评价人数处于前列这与两国电影市场规模、作品传播范围和观众参与度有关。类型层面剧情片的评价人数优势非常明显动作片、科幻片等类型也有较高参与度。这个结果对电影内容分析很有启发一部电影得分高不一定意味着传播最广一部电影评价人数多也不一定代表口碑最好。把评分和评价人数结合起来才能更接近真实市场表现。后续如果要继续扩展可以把“评分—评价人数”做成二维象限把电影划分为高口碑高热度、高口碑低热度、低口碑高热度和低口碑低热度几类用于更细的电影画像分析。图8国别与类型评价人数分布展示六、评论词云从用户语言里看影片印象除了结构化字段我还选取了一部热门国产动画电影采集其短评与影评文本并进行分词和词云展示。短评更接近普通观众的即时感受词云中会出现大量情绪性、体验性词汇例如“感觉”“不错”“真的”“中国”“国产”“特效”等说明观众在短评里更愿意表达情绪、态度和直观印象。影评则更偏深度表达词云中“剧情”“故事”“角色”“设定”“导演”“制作”“文化”等词汇更突出。短评和影评的差异很明显短评强调观影感受影评强调结构分析和价值判断。把这两类文本分开处理可以避免把即时情绪和长文本分析混在一起也能更准确地理解不同评论场景下用户关注点的差异。图9热门电影短评与影评词云展示七、评分预测从可视化走向模型验证可视化分析解决的是“数据呈现”和“规律观察”评分预测则进一步回答“模型能不能学到这些规律”。建模前我把可用字段整理为模型特征包括导演、类型、国家地区、语言、片长、评价人数、上映时间衍生字段和档期字段等。对于缺失的导演字段用“未知”进行填充对于电影时长这类数值字段使用中位数填充减少异常值影响。由于不同模型对数据格式要求不同CatBoost可以较好处理类别型特征而线性回归、决策树、随机森林和梯度提升回归通常需要数值化输入。因此项目中对分类变量进行了编码处理保证多种模型能够在同一套数据基础上进行对比。这样做的目的不是追求某一个模型“看起来高级”而是通过对比找到当前数据条件下更稳定、更适合的方案。图10时序特征工程与分类变量编码展示八、模型对比与Optuna调参评分预测部分一共构建了五类回归模型线性回归、决策树回归、随机森林回归、梯度提升回归和CatBoost回归。线性回归作为基准模型结果相对有限说明电影评分和各字段之间并不是简单线性关系。决策树能够捕捉非线性模式但单棵树稳定性不足。随机森林通过多个决策树集成在本项目中表现最好R²可以达到0.87左右RMSE约为0.49经过Optuna优化后RMSE进一步稳定在约0.48。Optuna调参主要用于决策树、随机森林和梯度提升模型。它比传统网格搜索更灵活通过TPE采样器智能探索参数空间并结合交叉验证评估不同参数组合。调参后梯度提升模型有明显改善随机森林继续保持综合表现领先。CatBoost虽然没有做复杂调参但凭借对类别特征的支持整体表现也比较稳定。最终选择随机森林作为项目中的主推评分预测模型主要因为它在预测精度、泛化能力和稳定性之间取得了较好平衡。对于电影评分这种受多因素共同影响的任务集成学习可以更好地处理复杂特征组合也不容易被单一变量带偏。模型结果说明评分预测不是简单“套算法”而是依赖前期的数据质量、字段理解、特征构造和模型评估。图11模型训练、预测效果与误差展示九、项目完成效果与可扩展方向目前这个项目已经完成从数据获取到模型预测的主流程闭环。采集模块可以扩展更多电影类别和年份区间清洗模块可以继续增加异常检测和字段标准化规则可视化模块可以进一步封装成交互式Web页面预测模块也可以接入更多文本特征例如剧情简介向量、影评情感分数、评论热度变化等。如果后续继续迭代我更倾向于把它升级成一个电影数据分析小平台。用户可以按国家、类型、年份和评分区间筛选电影也可以输入一部新电影的基本信息查看预测评分和相似影片分布。对于课程设计、毕业设计、数据分析作品集或者机器学习实践来说这个方向都比较适合继续深化。这个项目真正有价值的地方不是某一个图表或者某一个模型指标而是把一个真实数据场景拆成了可以落地的开发流程。从爬虫到清洗从图表到模型从结构化字段到评论文本每一步都能对应到实际的数据分析能力。做完以后会明显感受到数据项目不是简单写代码而是不断理解数据、修正口径、验证结果和沉淀流程。十、项目小结回头看这个豆瓣电影评分分析与预测项目它更像一次完整的数据工程与机器学习综合训练。前半部分解决数据从哪里来、如何变干净、如何被看懂后半部分解决评分能否被预测、哪些模型更稳定、参数优化是否有提升。通过这个项目可以把Python爬虫、Pandas清洗、MySQL存储、PyEcharts可视化、机器学习建模和Optuna调参串联起来形成一个完整的项目展示链条。对于想学习数据分析项目落地的朋友这类题目很适合从基础开始逐步扩展。先把数据采集和清洗做好再把图表维度设计清楚最后再接入模型和调参。项目越往后做越能体会到前期数据口径的重要性。模型不是凭空变准的真正决定上限的往往是数据理解和特征设计。每文一语真正能跑起来的项目靠的不是一时的灵感而是把每一个细节都打磨到可以复用、可以解释、可以继续生长。