# 动漫电影票房预测
项目是本人大二上学期科学计算程序设计基础结课项目,后来有一些补充。主要是Appium,机器学习和Tkinter实践。
## 项目简介
根据动漫电影上映短期内的信息预测其总票房有很大的实际意义。对于瞄准动漫电影映后经济价值开发的投资者来说,往往需要根据电影上映后短期内的表现来做出投资决定;负责电影推广宣传的相关机构也需要在上映短期内及时判断进一步宣传的必要性以及宣传力度,从而节约成本,最大化效益;影院也需要为排片等决策提供依据;相关机构可以根据预测结果决定是否提前开始动漫衍生品的开发,抢占市场等等。
本项目拟构建动漫电影票房预测模型,根据上映短期内的信息进行动漫电影票房区间的分类预测,并实现图形界面。具体任务如下:
1. 利用Python中Appium, Seleium从手机app“猫眼专业版”爬取相关数据,研究并设计合适的指标。
2. 构建基于多个子分类器集成的硬投票器,实现对动漫电影票房的预测。模型输入是我们设计的指标:首日票房,百度指数峰值,是否在热门档期,电影类型,IP信息,以及是否为续集,模型输出为模型预测的该电影所处的票房区间。票房区间分为3亿以上、1亿到3亿、1千万到1亿、5百万到1千万以及5百万一下。
3. 实现图形交互界面。输入所选择的子分类器以及指标参数,返回投票预测结果。
## 项目框架
通过查阅文献,结合实际分析确定指标,然后利用Python中的Appium、Selenium库设计爬虫程序,从手机app“猫眼专业版“上爬取和收集数据,共收集250条数据,之后利用pandas库进行数据的预处理以及统计分析,处理好后的样本共152条。
准备好数据后,利用sklean库分别建立了随机森林、XGBoost、GBDT、决策树模型进行票房区间的分类预测,随后不借助sklearn库,自己设计了一个硬投票器(Hard Voting)进行分类预测,并做交叉验证对模型进行评估。最后借助Tkinter实现图形界面。
![](图片/项目框架.png)
## 成果展示
1. 数据描述性统计
![](图片/描述性统计.png)
2. 模型十折交叉验证结果
![](图片/十折交叉验证结果.png)
2. 留一法结果
![](图片/留一法结果.png)
3. Kappa系数
![](图片/Kappa系数.png)
4. GUI展示
启动程序。可以看到首页:
![](图片/首页.png)
为了演示,我们选择三个子分类器:随机森林、XGBoost,GBDT。选择时右侧语句会随着打勾发生变化:
![](图片/打勾.png)
点击确定后,进入主界面:
![](图片/主界面.png)
按照提示输入参数,在此我们输入电影《千与千寻》的信息,输入如下:
![](图片/输入千与千寻信息.png)
点击预测,出现子窗口:
![](图片/子窗口.png)
《千与千寻》于2019年6月21日在大陆上映,总票房4.88亿,预测正确。关闭子窗口,点击返回上一级,则回到首页。
每次打开预测界面,背景图片随机切换,目前共有4张背景。
![](图片/切换背景.png)
5. 其他数据可视化
指标重要性:
![](图片/指标重要性.png)
决策树可视化:
![](图片/决策树可视.png)
旭日图:
![](图片/旭日图.png)
桑基图:
![](图片/桑基图.png)
## 项目和代码细节
1. 指标确定
对动漫电影而言,导演、主演影响力的作用微乎其微。而且我们针对的是根据上映短期内的表现来预测总票房,豆瓣关注度、豆瓣评分都是在电影上映一段时间后才形成和稳定,不具有采纳价值。但是我们认为对动漫电影来说,电影类型、续集以及其IP信息是值得考虑的因素。而且上映短期内的口碑和网络热度对后续票房的增长作用显著。在寻找数据源时我们发现,上映电影的百度指数峰值往往出现在上映后几天之内,其他热度指数比如微博指数等也具有参考意义,但是我们认为其于百度指数之间相关性较强,可以用百度指数代替。
综合上述考虑,我们将首日票房、百度指数峰值、电影类型、IP信息、档期、是否续集作为我们的指标。
2. 爬虫收集数据
借助Python中的Appium库来实现数据爬取。我们爬取的对象是手机app猫眼专业版。
爬虫部分由三个函数构成,分别负责连接手机并进入app、爬取一页上的数据、重复调用前两个函数并实现数据的全部爬取。
Appium是一个跨平台的移动端自动化测试工具。它可以模拟App内部的各种操作,比如点击、滑动、文本输入等,并通过WebDriver来实现app的自动化测试,同Selenium在PC端一样,做到“可见即可爬”。Python中提供了appium库并且可以通过webdriver与selenium库实现对接。
猫眼专业版app中有齐全的电影数据,于是将它作为爬虫的对象。2017年以前的总票房只有分账票房,不包含电商服务费,因此考虑到分析简便以及信息的时效性,选择2017年到2021年上映的票房在100万以上的动漫电影作为样本。
爬虫程序三个函数及功能介绍:
- `main()`函数:
首先传入server信息以及建立Session所需参数(手机型号等),利用appium中的webdriver的Remote方法连接手机,产生driver对象。随后利用selenium中的WebDriverWait函数产生wait对象,产生wait对象的主要目的是可以进行延时等待,如想要点击某按钮时可以等待其加载完成出现,而不至于加载时发现不了该按钮导致报错。
随后调用`enter_datafile(wait,driver)`函数进入猫眼专业版app 的资料库。
最后进行数据的爬取。由于crawl函数最多对同一个页面上5个电影进行爬取,因此需要调用crawl函数50次。而且在实际应用中观察发现,driver中用于滑动界面的swipe()函数不稳定,即使设置完全相同的参数,每次滑动的距离也不一样,因此在两次crawl函数之间只能手动在手机上滑动屏幕。一次crawl()完成后,程序会发出提示,要将下五个滚动到指定位置。利用time模块的sleep函数给手动工作提供时间。
每次调用的结果先以字典的形式存储到back_up变量中,键是电影名称,值为总票房、首日票房、影片分类、上映日期、热度指数组成的列表。
爬取完成后,利用pandas将字典转化成excel保存,命名为总原始数据.xlsx。
- `enter_datafile(wait,driver)`函数:
此函数接收两个参数,就是上面提到的wait对象和driver对象。进入app的主要过程如下:先在同意协议界面点击同意,然后进入资料库,随后选择时间段,选择电影类型为“动漫”。主要用到了wait的until()方法,driver的tap()方法。前者能够根据ID,xpath等选择对象,并且能够提供对象的click()方法模拟点击。后者接收位置参数,直接模拟手指在屏幕上对应位置进行点击。
- `crawl(wait,driver)`函数:
连接手机,打开资料库后,在Appium Inspector中可以看到的界面如下:
![](图片/inspector.png)
可以看到,在同一界面中有五个完全显示出来的电影。crawl函数的思路是:通过driver的tap方法依次点击五个电影的图片,进入对应电影的资料卡,然后在资料卡中找到想要的信息,通过ID。Xpath获取节点,再获取text属性,就获取到了我们想要的。
资料卡举例如下:
![](图片/资料卡.png)
在此界面中,我们想要的信息有:总票房,首日票房,电影类型、上映时间。事实上,稍微往下滑动,就可以看到百度指数峰值信息,这个滑动是通过`swipe()`来实现的,因为这里不需要滑动准确,只需
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能看懂并调试代码。 基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Appium爬虫+机器学习的票房预测源码+项目说明(Tkinter界面实现).zip (30个子文件)
project_code_0628
数据处理.py 4KB
TKinter界面实现.py 9KB
投票器建立及结果分析.py 7KB
图片
指标重要性.png 45KB
Kappa系数.png 15KB
项目框架.png 55KB
旭日图.png 590KB
桑基图.png 3.86MB
子窗口.png 159KB
主界面.png 159KB
首页.png 16KB
切换背景.png 131KB
十折交叉验证结果.png 13KB
爬虫运行.png 45KB
原始数据.png 239KB
inspector.png 162KB
留一法结果.png 8KB
哪吒.gif 87KB
决策树可视.png 106KB
熊出没.gif 174KB
资料卡.png 165KB
打勾.png 18KB
千与千寻.gif 276KB
输入千与千寻信息.png 159KB
描述性统计.png 79KB
模型训练中.gif 63KB
爬虫程序.py 6KB
数据
总电影数据.xlsx 21KB
总原始数据.xlsx 22KB
README.md 14KB
共 30 条
- 1
资源评论
- A23528140162024-12-21超级好的资源,很值得参考学习,对我启发很大,支持!
辣椒种子
- 粉丝: 4240
- 资源: 5837
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功