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

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.mzph.cn/news/228725.shtml

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

相关文章

12、ble_mesh_vendor_model 服务端,自定义模型

1、初始化流程,存储初始化,nvs擦除, board_init();初始化LED。 2、bluetooth_init();ble协议栈初始化 3、ble_mesh_get_dev_uuid(dev_uuid);//获取设备uuid加载到mac,后两位dev uuid 4、ble_mesh_init();//ble mesh协议栈初始化。…

Nginx编译安装+Nginx模块详解+Nginx虚拟主机(新版)

Nginx编译安装Nginx模块详解Nginx虚拟主机 Nginx编译安装Nginx模块详解Nginx虚拟主机一、编译安装Nginx服务二、nginx版本升级1、nginx平滑升级的步骤2、示例 三、添加Nginx系统服务1、使用init.d脚本2、使用 systemd 服务配置 四、认识Nginx服务的主配置文件 nginx.conf1、全局…

13.Spring 整合 Kafka + 发送系统通知 + 显示系统通知

目录 1.Spring 整合 Kafka 2.发送系统通知 2.1 封装事件对象 2.2 开发事件的生产者和消费者 2.3 触发事件:在评论、点赞、关注后通知​编辑 3.显示系统通知 3.1 通知列表 3.1.1 数据访问层 3.1.2 业务层 3.1.3 表现层 3.2 开发通知详情 3.2.1 开发数据…

HttpRunner接口自动化测试框架

简介 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。 项目地址:GitHub - httprunner/httprunner: HttpRunner 是一个开源的 API/UI…

VMwareKali进行WIFI密码爆破

注:本实验所用仪器全为自己使用!请不要侵犯他人权益 文章目录 一、连接无线网卡二、抓取TCP握手包三、aircrack-ng跑包和hashcat跑包1.aircrack2.Hashcat 环境: VMware Workstation 16 Pro kali-linux-2023.1 64位 python3.9.13 RT3070-U…

HarmonyOS应用开发者基础认证考试满分答案(100分)【全网最全-不断更新】【鸿蒙专栏-27】

系列文章: HarmonyOS应用开发者基础认证满分答案(100分) HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案(100分) HarmonyOS云开发基础认证满分答案(100分&#xf…

《ThreadLocal使用与学习总结:2023-12-15》由浅入深全面解析ThreadLocal

由浅入深全面解析ThreadLocal 目录 由浅入深全面解析ThreadLocal简介基本使用ThreadLocal与synchronized的区别ThreadLocal现在的设计(JDK1.8)ThreadLocal核心方法源码分析ThreadLocalMap源码分析弱引用与内存泄露(内存泄漏和弱引用没有直接关…

网络 / day02 作业

1. TCP和UDP通信模型 1.1 TCP server #include <myhead.h>#define PORT 9999 #define IP "192.168.250.100"int main(int argc, const char *argv[]) {//1. create socketint sfd -1;if( (sfd socket(AF_INET, SOCK_STREAM, 0 ))-1 ){perror("socke…

使用Jemeter对HTTP接口压测

我们不应该仅仅局限于某一种工具&#xff0c;性能测试能使用的工具非常多&#xff0c;选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验&#xff0c;也算略有小成&#xff0c;任何性能测试&#xff08;如压力测试、负载测试、疲劳强度测试等&#…

性能测试之Artillery(示例及指标)

官方文档&#xff1a;https://www.artillery.io/docs/get-started/first-test PS:文档挺详细&#xff0c;教程比较全 示例 config:http:extendedMetrics: truetarget: http://127.0.0.1:8005phases:- duration: 10 # 持续时间arrivalRate: 10 # 每秒创建10个用户rampTo: 100 …

SwitchHosts - 管理、切换多个 hosts 方案的工具

一、hosts文件 简单的说&#xff0c;hosts文件是用于本地dns服务的&#xff0c;采用ip 域名的格式写在一个文本文件当中&#xff0c;Hosts是一个没有扩展名的系统文件&#xff0c;可以用记事本等工具打开&#xff0c;其作用就是将一些常用的网址域名与其对应的IP地址建立一个关…

Tor网络原理详解

引入 匿名通信是一种通过采用数据转发、内容加密、流量混淆等措施来隐藏通信内容及关系的隐私保护技术。为了提高通信的匿名性&#xff0c;这些数据转发链路通常由多跳加密代理服务节点构成&#xff0c;而所有这些节点即构成了匿名通信系统&#xff08;或称匿名通信网络&#…

在排序数组中查找元素的第一个和最后一个位置(Java详解)

一、题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示…

OpenTiny Vue 组件库3.12.0 发布:文档大优化!增加水印和二维码两个新组件

非常高兴跟大家宣布&#xff0c;2023年11月30日&#xff0c;OpenTiny Vue 发布了 v3.12.0 &#x1f389;。 OpenTiny 每次大版本发布&#xff0c;都会给大家带来一些实用的新特性&#xff0c;10.24 我们发布了 v3.11.0 版本&#xff0c;增加了富文本、ColorPicker 等4个新组件…

linux下查看进程资源ulimit

ulimit介绍与使用 ulimit命令用于查看和修改进程的资源限制。下面是ulimit命令的使用方法&#xff1a; 查看当前资源限制&#xff1a; ulimit -a 这将显示当前进程的所有资源限制&#xff0c;包括软限制和硬限制。查看或设置单个资源限制&#xff1a; ulimit -<option> …

喜报丨迪捷软件入选2023年浙江省信息技术应用创新典型案例

12月6日&#xff0c;浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动&#xff0c;由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展&#xff0c;共遴选出24个优秀典型解决方案&#xff0c;迪捷软件“基于全数…

安装鸿蒙开发者工具DevEco Studio

1.进入官网下载工具 https://developer.harmonyos.com/cn/develop/deveco-studio/ 选择您电脑对应的系统下载即可 2.安装 很简单直接点击“next”,此处不做赘述 3.配置环境 安装完成后&#xff0c;打开DevEco Studio 会提示配置环境。安装node.js和ohpm 如果不小心关了&a…

DevEco Studio无法识别本地模拟器设备的解决方法

遇到了一个问题&#xff0c;之前测试无误的本地模拟器&#xff0c;运行后设备栏中无法识别了。 此时保持模拟器处于开启状态&#xff0c;关闭DevEco Studio窗口重新启动后&#xff0c;发现重新识别设备了。

【CASS精品教程】cass11提示“请不要在虚拟机中运行此程序”的解决办法

文章目录 一、问题提示二、解决办法一、问题提示 按照正常安装教程安装好南方测绘cass 11之后,打开的时候可能会有以下提示:请不要在虚拟机中运行此程序,如下图所示: 遇到问题,咱们就想办法解决问题,下面将自己尝试的方法及最终解决情况跟大家说一下,供参考。 二、解决…

Linux---压缩和解压缩命令

1. 压缩格式的介绍 Linux默认支持的压缩格式: .gz.bz2.zip 说明: .gz和.bz2的压缩包需要使用tar命令来压缩和解压缩.zip的压缩包需要使用zip命令来压缩&#xff0c;使用unzip命令来解压缩 压缩目的: 节省磁盘空间 2. tar命令及选项的使用 命令说明tar压缩和解压缩命令 …