2021年数维杯国际大学生数学建模D题2021年电影市场票房波动模型分析求解全过程文档及程序

news2024/9/22 23:34:52

2021年数维杯国际大学生数学建模

D题 2021年电影市场票房波动模型分析

原题再现:

  1、电影票房预测建模背景
  随着人们文化消费需求的增加,电影院和银幕的数量不断增加,我国的电影产业不断呈现出繁荣景象。2019年,全国电影票房642.66亿元。电影票房不仅直接反映了一部电影为投资公司创造的经济价值,也从侧面反映了电影的艺术品质和经营策略。它是衡量一部电影成功与否的重要指标。它自然地反映了电影作品的市场需求和投资吸引力的程度。。如果能够提前预测电影产品在市场上的接受度和盈利能力,将对电影产业链各个环节的决策产生巨大影响。因此,准确预测电影票房无疑对风险控制和决策具有重要的现实意义。
  影响电影票房的因素有很多,比如电影本身的质量、放映时间、广告、社会环境、放映电影院的数量,甚至放映期间的天气。根据预测阶段的不同,票房预测分为前期预测和后期预测,即电影发行前后的票房预测。根据预测阶段的不同,票房预测分为前期预测和后期预测。对于电影的预预测,目前的研究成果包括:基于网络文本的电影类型与票房关系研究;基于明星效应、演员性别、导演水平等因素,研究了不同年级对电影票房的影响;基于神经网络算法研究电影上映日期、上映时间、上映季节等因素与票房的关系;训练多层感知器MLP神经网络对电影质量、人气等变量进行预发布数据处理,并根据预期收益对电影进行分类。电影后期票房预测采用反馈神经网络电影票房预测模型;票房预测考虑了导演、演员和时间表等因素;研究受众在社交网络、网络信息传播、网络搜索中的口碑传播对电影票房的积极影响。

  2、电影在线舆情评分对票房的影响
  随着我国互联网技术的不断发展,互联网已经成为电影营销的核心宣传媒介。目前,豆瓣、猫眼等电影评价平台大多不实行实名制,参与者具有多样性和复杂性。另外,结合互联网本身的特点,电影网络评价行为具有较强的匿名性和隐蔽性。这也使得雇佣“互联网海军”来不恰当地评估电影、购买票房和锁定电影行业的做法变得不常见。首先,网络的隐蔽性往往使被害人难以准确识别“网络海军”。其次,我国现行法律对“网络水军”对电影进行不当评价的认定和规范还存在不完善之处。基于此,如何识别和管理网络海军对电影的收视率已成为我国电影产业发展中亟待解决的问题。

  3、突发事件对电影票房的影响
  电影是一种公共娱乐,突发事件以道德和法律的形式对电影的票房产生了巨大的影响。2020年新冠病毒的突然爆发几乎摧毁了公众聚集的电影市场;如何运用模型分析各种突发事件对电影票房的影响显然是非常重要的。

  建模中需要解决的主要问题有:

  1、电影票房早期预测的核心是选择有效的预测特征。影响电影票房的因素是复杂的,衡量方法也各不相同。特征包括:电影时长、演员、导演、电影类型、电影格式(2D、3D、IMAX)、电影是否续集、上映日期、制作公司、发行公司等。根据电影分类的特点,考虑电影分类的特点、电影类型、导演等分类特点,导演评分等分类特征,对提供的数据集中的电影进行聚类和分类,并验证分类的有效性。

  2、常用的票房预测模型包括多元回归、神经网络等,一些学者通过研究观众口碑传播、网络信息传播和社会网络中的网络搜索(见参考文献)对票房进行预测,建立了对电影票房有积极影响的电影票房预测模型,为电影市场的票房预测提供参考,根据提供的数据给出分类模型(标题1的结果),并预先给出每个类别的估计票房预测和总体票房预测。

  3、收集豆瓣、猫眼等平台的电影在线舆情评价数据,建立识别网络舆情正负分的算法(标准化为[-1,1]);建立模型提取话题词、话题分类等重要指标;建立模型分析网络舆情与票房的相关性及对票房的影响程度;基于问题和现状,设计思路和具体方法来识别海军电影评分网络。该方法需要具有逻辑上的自洽性和可行性。

  4、为应对新冠病毒的突然爆发,国家《电影院开业传染病防治指南》
  考虑到疫情对模型的影响,分析其对电影票房的现实影响和未来预测,各场馆的上座率不应超过30%、50%、75%等。利用所提供的数据,模型分析了在疫情稳定后,不同出勤率(30%、50%、75%)对电影票房预测的影响。

整体求解过程概述(摘要)

  近年来,我国电影产业不断呈现出繁荣的迹象,电影票房是衡量一部电影成功与否的重要指标,它也反映了电影的市场需求和投资吸引力。然而,影响电影票房的因素很多。电影本身的因素(电影的分类特征)、网络海军对电影的评价以及突发事件都会影响电影的票房。

  在问题1中,我们只考虑电影本身的因素,主要研究电影的持续时间、黄金时段、首日票房、总票房等9个特征。然后采用TOPSIS法对9个特征进行评分和评价,并进行k均值聚类分析,将其划分为5类,验证了分类的有效性。

  在第二个问题中,我们建立了BP神经网络模型,通过官网找到了2018年和2019年41部电影的相关数据,并将其作为训练样本加入到神经网络中。在得到训练好的神经网络后,我们开始预测电影的最终票房,然后进行误差分析,发现误差很小。

  在第三个问题中,首先通过python爬虫对人脸襟翼和猫眼的评论数据进行爬网,然后利用网络的正负分识别建立DNN神经网络,建立主题词、主题分类等重要指标提取模型,使用词频统计方法计算某个词作为特征词的重要性,并将前200个特征显示在词云图中。以5000部电影为样本进行线性回归分析,得到的相关度不是很高。最后,基于logistic回归方法,提出了一种可行的网络海军识别算法。

  在第四个问题中,由于可用数据相对较少,我们建立了一个更精确的SVM神经网络预测模型。同时,为了使预测结果更加可靠,采用《猫眼专业版》最终票房预测数据为26,对每部电影的最终票房进行求解,并根据实际情况对回归预测结果进行合理解释。

模型假设:

  1、假设除影响本问题研究电影票房的电影分类特征外,其他电影分类特征对电影票房没有影响。

  2、假设猫眼专业版预测的最终票房与真实的最终票房一致。

  3、假设网络海军没有干预选定的电影评论。

  4、假设处于高、中风险区域的电影院已关闭,未开放。

问题分析:

  数据分析
  我们通过豆瓣、猫眼等主要平台随机选取了67部电影。根据电影分类的特点:实时票房、时长、续集、豆瓣评分、电影格式、一线明星和知名导演数量、黄金时段、首日票房、总票房等分类特征,对提取的67部电影数据进行分类。我们将分类结果放入支持材料中。其中,我们对一些数据进行了近似处理,使计算更加容易。

  问题一分析
  在问题1中,我们根据电影的分类特征:实时票房、持续时间、续集、豆瓣评分、电影格式、一线明星和知名导演数量、黄金时段、首日票房、总票房等9个特征[1]采用多目标决策分析法TOPSIS法对26部电影进行评分,然后对得分进行k-means聚类分析[2],最后成功地验证了我们分类的有效性。

  问题二分析
  在第二个问题中,我们主要采用了BP神经网络算法[3]。根据历史数据对网络进行训练,输入训练集(即票房的各种信息),得到训练好的神经网络对2021年的电影进行预测。预测结果与实际票房差距仅为3.5%,说明我们的模型建立是成功的。

  问题三分析
  在第三个问题中,首先利用python爬虫对人脸襟翼和猫眼的评论数据进行爬网,然后利用网络的正负分识别建立DNN神经网络,以5000个电影数据为样本,进行线性回归分析。经过化学处理后发现,票房与预算、票数、人气有较强的正相关关系,但与收视率相关性不太强,相关系数仅为0.19。

  问题四分析
  在第四个问题中,我们使用更精确的SVM神经网络模型[4]来预测入住率为75%、50%、30%时的票房情况,即当限购率为75%时,对于高票房(如甲级电影)的票房影响最大,但对于相对低票房的电影,票房会增加;但当限制率为50%时,各类电影的票房都有一定程度的下降;当限值率为30%时,即当疫情较为严重时,影视业的经济形势处于低迷状态,票房也出现了严重下滑。最后,对结果进行了合理的分析。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

clc
clear
x=xlsread('The first question.xlsx','Sheet1','B2:I27');
[n,m]=size(x);
zh=zeros(1,m);
d1=zeros(1,n); %Minimum matrix
d2=zeros(1,n); %Maximum matrix
c=zeros(1,n); %Proximity
%Normalized
for i=1:m
for j=1:n
zh(i)=zh(i)+x(j,i)^2;
end
end
for i=1:m
for j=1:n
x(j,i)=x(j,i)/sqrt( zh(i));
end
end
%Calculate the distance
xx=min(x);
dd=max(x);
for i=1:n
for j=1:m
d1(i)=d1(i)+(x(i,j)-xx(j))^2;
end
d1(i)=sqrt(d1(i));
end
for i=1:n
for j=1:m
d2(i)=d2(i)+(x(i,j)-dd(j))^2;
end
d2(i)=sqrt(d2(i));
end
%Calculate proximity
for i=1:n
c(i)=d1(i)/(d2(i)+d1(i));
end
c_1=c';
%Calculate contour values
numC=10;
for i=1:numC
kidx = kmeans(c_1,i);
silh = silhouette(c_1,kidx); %Calculate the contour value
silh_m(i) = mean(silh); %Mean contour values were calculated
end
figure
plot(1:numC,silh_m,'ko-', 'linewidth',2)
set(gca,'linewidth',2);
xlabel('number of categories');
ylabel('mean contour value');
title(' average contour values corresponding to different categories');
%kMean cluster calculation process
[idx,ctr]=kmeans(c',5); % Clustering using K-means method
%Extract the sample number of the same category
c1=find(idx==1); c2=find(idx==2);
c3=find(idx==3); c4=find(idx==4);
c5=find(idx==5);
figure;
F1 = plot(find(idx==1), c(idx==1),'k:*', ... find(idx==2), c(idx==2),'k:o', ... find(idx==3), c(idx==3),'k:p', ... find(idx==4), c(idx==4),'k:d', ... find(idx==5), c(idx==5),'k:+');
set(gca,'linewidth',2);
set(F1,'linewidth',2, 'MarkerSize',8);
xlabel('serial number','fontsize',12);
ylabel('score','fontsize',12);
title('K-means clustering results');
disp('clustering results:');
disp(['class 1:' ,'center:',num2str(ctr(1)),' ','class sample number:', num2str(c1')]);
disp(['class 2:' ,'center:',num2str(ctr(2)),' ','class sample number:', num2str(c2')]);
disp(['class 3:' ,'center:',num2str(ctr(3)),' ','class sample number:', num2str(c3')]);
disp(['class 4:' ,'center:',num2str(ctr(4)),' ','class sample number:', num2str(c4')]);
disp(['class 5:' ,'center:',num2str(ctr(5)),' ','class sample number:', num2str(c5')]);
clc
clear
shichang=xlsread('First question.xlsx','Sheet2','B2:B42')';
xuji=xlsread('First question.xlsx','Sheet2','C2:C42')';
pingfen=xlsread('First question.xlsx','Sheet2','D2:D42')';
geshi=xlsread('First question.xlsx','Sheet2','E2:E42')';
mingxingshu=xlsread('First question.xlsx','Sheet2','F2:F42')';
huangjindang=xlsread('First question.xlsx','Sheet2','G2:G42')';
shouripiaofang=xlsread('First question.xlsx','Sheet2','H2:H42')';
shouriguanyingrenshu=xlsread('First question.xlsx','Sheet2','I2:I42')';
piaofang=xlsread('First question.xlsx','Sheet2','J2:J42')';
p=[shichang; xuji; pingfen; geshi; mingxingshu; huangjindang; shouripiaofang;
shouriguanyingrenshu;];
t=piaofang;
[pn, inputStr] = mapminmax(p);
[tn, outputStr] = mapminmax(t);
net = newff(pn, tn, [8 7 1], {'purelin', 'logsig', 'purelin'});
net.trainParam.show = 10;
net.trainParam.epochs = 5000;
net.trainParam.lr = 0.05;
net.trainParam.goal = 0.001;
net.divideFcn = '';
net = train(net, pn, tn);
answer = sim(net, pn);
answer1 = mapminmax('reverse', answer, outputStr);
t = 1:41;
a1 = answer1(1,:);
figure(1);
plot(t, a1, 'ro', t, piaofang, 'b+');
legend('predict box office', 'actual box office');
xlabel('movie number'); ylabel('box office (ten thousand yuan)');
title('Box office training value and real value comparison chart');
grid on;
wucha=(a1-piaofang)./piaofang;
figure;
plot(wucha,'r-^');
xlabel('movie number'); ylabel('relative error');
hold on;
newInput = [xlsread('First question.xlsx','Sheet1','B2:B27')';
xlsread('First question.xlsx','Sheet1','C2:C27')';
xlsread('First question.xlsx','Sheet1','D2:D27')';
xlsread('First question.xlsx','Sheet1','E2:E27')';
xlsread('First question.xlsx','Sheet1','F2:F27')';
xlsread('First question.xlsx','Sheet1','G2:G27')';
xlsread('First question.xlsx','Sheet1','H2:H27')';
xlsread('First question.xlsx','Sheet1','I2:I27')';];
%Use the normalization parameters of the original input data (the input data of the
training set) to normalize the new input data
newInput = mapminmax('apply', newInput, inputStr);
%Simulation
newOutput = sim(net, newInput);
%Denormalization
newOutput = mapminmax('reverse',newOutput, outputStr);
disp('Predict the box office for the other five movies: ');
abs(newOutput)
import urllib.request
from bs4 import BeautifulSoup
import random
import time
import csv
def getRequest(url):
header1 = {
"Host":"movie.douban.com", "User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" }
header2 = {
"Host": "movie.douban.com", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:73.0) Gecko/20100101
Firefox/73.0" }
list = [header1,header2]
index = random.randint(0,len(list)-1)
req = urllib.request.Request(url=url,headers=list[index])
return req
def getData(url,commentAll):
req = getRequest(url)
html = urllib.request.urlopen(req)
data = html.read()
soup = BeautifulSoup(data,"html.parser")
comments = soup.select("#comments")[0]
items = comments.select(".comment-item")
for i in items:
info = i.select(".comment-info")[0]
author = info.find("a").string
star = info.select("span")[1]["title"]
short = i.select(".short")[0].string
talk = {"author":author,"star":star,"short":short}
commentAll.append(talk)
return commentAll
def writeInto(commentAll):
with open("douban.csv","a+",encoding="utf-8",newline="") as file:
writer = csv.writer(file)
for i in commentAll:
info = [i["author"],i["star"],i["short"]]
writer.writerow(info)
file.close()
if __name__ == '__main__':
commentAll = []
for i in range(0,3):
url =
"https://movie.douban.com/subject/25931446/comments?start=%d&limit=20&sort=n
ew_score&status=P"%(i*20)
getData(url,commentAll)
time.sleep(10)
writeInto(commentAll)

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1316052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java设计模式学习之【享元模式】

文章目录 引言享元模式简介定义与用途实现方式 使用场景优势与劣势在Java中的应用享元模式在Spring中的应用画图示例代码地址 引言 想象一下,您正在开发一个游戏,游戏中有成千上万的树木和建筑。如果每个对象都独立存储它的所有数据,将会占用…

前端路由钩子的神奇之处:你真的了解它们吗?(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

JAVAEE大型金融支付-第1章-讲义-项目介绍

第1章 讲义-项目介绍与环境搭建 1.项目背景 1.1 项目背景 随着移动支付的盛行,商业银行、第三方支付公司、其它清算机构、消费金融公司等众多类型的机构,都在为商户 提供网络(移动)支付解决方案。另一方面,用户的支…

狗dog目标检测数据集VOC+YOLO格式1W+张

狗,是食肉目犬科 [11]犬属 [13]哺乳动物 [12],别称犬,与马、牛、羊、猪、鸡并称“六畜” [13]。狗的体型大小、毛色因品种不同而不同,体格匀称;鼻吻部较长;眼呈卵圆形;两耳或竖或垂;…

RTX 40 SUPER发布时间定了!价格也有了

快科技12月16日消息,NVIDIA RTX 40 SUPER系列显卡基本确定将在2024年1月8日正式发布,也就是CES 2024大展期间,随后在1月中下旬陆续解禁上市。 RTX 4070 SUPER 1月16日解禁公版/原价丐版,1月17日解禁高价高配版,上市开…

高云GW1NSR-4C开发板M3核串口通信

1.PLLVR频率计算 高云的M3核要用到PLLVR核,其输出频率FCLKIN*(FBDIV_SEL1)/(IDIV_SEL1),但同时要满足FCLKIN*(FBDIV_SEL1)*ODIV_SEL)/(IDIV_SEL1)的值在600MHz和1200MHz之间。例如官方示例,其输入频率FCLKIN50MHz,要输出80MHz&am…

5个创建在线帮助文档的好方法!

在线帮助文档是企业为用户提供支持服务的重要工具,它能够帮助用户更好地了解和使用产品,提高用户体验。然而,创建一份优秀的在线帮助文档需要掌握一定的技巧和方法。接下来就介绍一下创建在线帮助文档的5个好方法,帮助企业更好地为…

【C++干货铺】会搜索的二叉树(BSTree)

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 前言: 二叉搜索树 二叉搜索树概念 二叉搜索树操作 二叉搜索树的查找 二叉搜索树的插入 二叉搜索树元素的删除 ​二叉搜索树的实现 BSTree结点 …

C#学习笔记 - C#基础知识 - C#从入门到放弃

C# 持续更新中~~ 上次更新日期:20231215 第1节 C# 简单介绍1.1 C# 是什么1.2 C# 强大的编程功能1.3 C# 发展史1.4 C#与Java区别 第2节 C#基本语法2.1 C#程序结构2.2 C# 结构解析2.3 命名空间及标识符、关键字2.3.1 别名的使用2.3.2 标识符2.3.3 C#关键字 第3节 变量…

树莓派(Raspberry Pi)4B密码忘记了,怎么办?

树莓派长时间不用,导致密码忘记了,这可咋整? 第1步:取出SD卡 将树莓派关机,移除sd卡,使用读卡器,插入到你的电脑。 第2步:编辑 cmdline.txt 在PC上打开SD卡根目录,启动…

windows电脑半夜突然睡眠自动唤醒的问题查找与治理

遇见几次了,半夜起来上厕所,发现休眠的电脑居然自己开了,还得跑过去把电脑再休眠,很烦。昨天晚上居然自动唤醒两次,忍无可忍了,于是开始查找原因。 查询原因如下,解决方面也在后面。 固件 S3 计…

电子元器件-电阻

电阻 采样限流定时保护上拉 链接: 另类方式讲电阻! 采样 应用场景,如我们在调节汽车座椅的过程中,如果座椅的行程达到尽头,此时控制座椅运动的电机就会停止,因而导致电机的电流非常大。如果正常运转的电流为1A&#…

大家都崩,美团不崩:其高可用架构,巧夺天工!

说在前面 在40岁老架构师尼恩的50读者群中,一直在指导大家简历,指导大家职业升级。 前几天,指导了一个40岁老伙伴拿到年薪100W offer,小伙伴的优势在异地多活。 在简历指导的过程中,尼恩发现: 异地多活的…

alibaba druid连接池

alibaba druid连接池 如果是SpringBoot 3.x,使用以下依赖 com.alibaba druid-spring-boot-3-starter ${druid-spring-boot-starter.version} application.yml配置 登录页面配置 切面监控springboot类 对 Web 请求的监控 配置filter,收集统计信息&#x…

DevEco Studio中配置代码片段

进入设置(快捷键CtrlAltS) 选择Editor > Live Templates 添加片段 其中 $END$ 代表光标首次出现位置 一定要选择适用语言!!! 最后Apply > OK 即可,输入快捷命令回车即可快速生成代码片段。

权重衰减(Weight Decay)

在深度学习中,权重衰减(Weight Decay)是一种常用的正则化技术,旨在减少模型的过拟合现象。权重衰减通过向损失函数添加一个正则化项,以惩罚模型中较大的权重值。 一、权重衰减 在深度学习中,模型的训练过程…

Flutter在Visual Studio Code上首次创建运行应用

一、创建Flutter应用 1、前提条件 安装Visual Studio Code并配置好运行环境 2、开始创建Flutter应用 1)、打开Visual Studio Code 2)、打开 View > Command Palette。 3)、在搜索框中输入“flutter”,弹出内容如下图所示,选择“ Flutter: New Pr…

SoloLinker第一次使用记录,解决新手拿到板子的无所适从

本文目录 一、简介二、进群获取资料2.1 需要下载资料2.2 SDK 包解压 三、SDK 编译3.1 依赖安装3.2 编译配置3.3 启动编译3.4 编译后的固件目录 四、固件烧录4.1 RV1106 驱动安装4.2 打开烧录工具4.3 进入boot 模式(烧录模式)4.4 烧录启动固件4.5 烧录升级…

浏览器录屏技术探究与实践

一、引言 随着网络技术的快速发展,浏览器已经成为人们获取信息的主要途径。浏览器录屏技术作为一种新兴的媒体捕捉和分享方式,逐渐受到广泛关注。本文将对浏览器录屏技术进行深入探讨,分析其实现原理,并给出实际应用中的解决方案…

MC-30A (32.768 kHz用于汽车应用的晶体单元)

MC-30A 32.768 kHz用于汽车应用的晶体,车规晶振中的热销型号之一。该款石英晶体谐振器,可以在-40 to 85 C的温度内稳定工作,能满足起动振动的要求。同时满足AEC-Q200无源元件质量标准认证,满足汽车仪表系统的所有要求。 频率范围…