2024全国研究生数学建模竞赛(数学建模研赛)ABCDEF题深度建模+全解全析+完整文章

news2024/11/9 1:01:52

全国研究生数学建模竞赛(数学建模研赛)于9月21日8时正式开赛,赛程4天半,咱这边会在开赛后第一时间给出对今年的6道赛题的评价、分析和解答。包括ABCDEF题深度建模+全解全析+完整文章,详情可以点击底部的卡片来获取哦。

以下是我们团队往期的部分建模展示:

众所周知,好的算法和可视化对于数学建模比赛至关重要,因此这边先分享一些研赛中可能会用到的算法和可视化的示例代码,希望能够对大家有所帮助,以下这些内容也是各类数学建模比赛中经常用到的,研赛同样也不例外~

蒙特卡罗算法

算法介绍:蒙特卡罗算法是一种基于概率和随机性的方法,通过生成大量随机样本来模拟复杂系统的行为或计算数值解。它不依赖于严格的解析解,而是通过随机采样来估计问题的结果。例如,在估计圆周率π的值时,可以在一个正方形内随机生成点,然后计算落在内切圆内的点的比例,利用这个比例估计π的值。蒙特卡罗算法广泛应用于金融风险分析、物理学中的粒子行为模拟、复杂系统的概率分析等领域.

算法示例:

我们可以使用蒙特卡罗算法来估计三维图形的体积。下面是一个简单的Python程序,它使用蒙特卡罗算法来估计一个球体的体积,并使用Matplotlib库进行三维可视化。

import random
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

def monte_carlo_volume(n):
    count = 0
    for i in range(n):
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
        z = random.uniform(-1, 1)
        if x**2 + y**2 + z**2 <= 1:
            count += 1
    return (count / n) * 8

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

n = 10000
volume = monte_carlo_volume(n)
print(f"Estimated volume of the sphere: {volume:.4f}")

xs = []
ys = []
zs = []
colors = []
for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
    z = random.uniform(-1, 1)
    if x**2 + y**2 + z**2 <= 1:
        xs.append(x)
        ys.append(y)
        zs.append(z)
        colors.append(z)

ax.scatter(xs, ys, zs, c=colors, cmap='coolwarm', marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()
  • 程序首先定义了一个名为monte_carlo_volume的函数,该函数使用蒙特卡罗算法来估计球体的体积。
  • 然后,程序使用monte_carlo_volume函数来估计球体的体积,并将结果打印到控制台上。
  • 接下来,程序使用Matplotlib库创建一个3D散点图,该图显示了球体的随机采样点,并根据每个点的z坐标值进行颜色渐变。

可视化效果如下:

部分依赖分析图(Partial Dependence Plot)

部分依赖分析图(Partial Dependence Plot,简称PDP)是一种用于解释复杂机器学习模型的可视化工具。PDP可以帮助我们理解一个或两个特征对模型预测结果的影响,而忽略掉其他特征的影响。这种分析对于提高模型的透明度和可解释性非常有价值。

主要特点和用途

1. 展示特征影响:PDP显示了在保持模型中所有其他特征固定的情况下,一个特征(或两个特征的交互)对预测结果的平均影响。

2. 可解释性:对于复杂的模型(如随机森林、梯度提升机等),PDP帮助解释单个特征如何影响模型的预测,提高了模型的可解释性。

3. 非线性关系和交互效应:PDP特别适合揭示特征与预测目标之间的非线性关系,以及不同特征之间的交互效应。

工作原理

PDP通过对数据集中的特定特征进行多次采样,并保持其他特征不变,然后计算模型对这些样本的预测平均值来生成。

PDP是机器学习领域中一个非常有用的工具,尤其是在需要解释复杂模型的决策过程时。通过使用PDP,数据科学家和分析师可以更好地理解和信任他们的模型预测。图像: 部分依赖分析图的生成需要一个训练好的模型和特定的数据集,这里使用一个简单的合成数据集和一个基本的分类模型来演示。

这是一个部分依赖分析图的示例,它展示了在一个简单的合成数据集上训练的梯度提升分类器中,特征0、特征1以及它们的组合(特征0和1)对模型预测的影响。这种类型的图表非常有用于解释机器学习模型的行为,特别是在识别哪些特征对模型预测最有影响时。

生成这个图表的Python代码如下:

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.inspection import plot_partial_dependence
from sklearn.datasets import make_classification

# 创建合成数据集
X, y = make_classification(n_samples=100, n_features=5, random_state=42)

# 训练梯度提升分类器
clf = GradientBoostingClassifier(n_estimators=50, random_state=42).fit(X, y)

# 绘制部分依赖图
features = [0, 1, (0, 1)]
plot_partial_dependence(clf, X, features, grid_resolution=20)

# 显示图形
plt.suptitle('Partial Dependence Plots')
plt.show()

进阶可视化图表:成对关系图

成对关系图是一种可视化技术,用于显示数据集中每个变量之间的关系。它通常用于探索数据集中的相关性和分布情况。成对关系图可以用于许多不同的应用程序,例如数据分析、生物学、金融等领域。

下面是一个简单的Python程序,它使用Seaborn库创建一个成对关系图,该图显示了Iris数据集中每个变量之间的关系: iris数据集是一个经典的机器学习数据集,用于分类和聚类等任务。它包含了150个样本,每个样本有四个特征和一个标签。特征是鸢尾花的萼片和花瓣的长度和宽度,单位是厘米。标签是鸢尾花的三个品种之一:山鸢尾、变色鸢尾和维吉尼亚鸢尾。这个数据集是由英国统计学家和生物学家Fisher在1936年发表的论文中提出的,是最早用于评估分类方法的数据集之一。iris数据集在统计学和机器学习领域都有广泛的应用和影响,被认为是一个简单而优美的数据集。

这个程序使用Seaborn库创建一个成对关系图,该图显示了Iris数据集中每个变量之间的关系。程序使用sns.load_dataset函数加载Iris数据集,并使用sns.pairplot函数创建一个成对关系图。

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")

sns.pairplot(iris, hue="species", markers=["o", "s", "D"])

plt.show()

成对关系图的应用场景包括但不限于以下几个方面:

  1. 数据分析:成对关系图可以用于显示数据集中每个变量之间的关系,帮助数据分析人员更好地理解数据。
  2. 生物学:成对关系图可以用于显示基因表达数据的密度和分布情况,帮助生物学家更好地理解基因表达数据。
  3. 金融:成对关系图可以用于显示股票价格的密度和分布情况,帮助投资者更好地理解股票市场。

其他常用可视化图表

1. 直方图(Histogram)

用途:展示数据的分布情况。

Python 示例

data = np.random.normal(0, 1, 1000)

plt.hist(data, bins=30)
plt.title('Histogram Example')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

2. 饼图(Pie Chart)

用途:显示各部分占整体的比例。

Python 示例

sizes = [15, 30, 45, 10]
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.
plt.title('Pie Chart Example')
plt.show()

3. 热力图(Heatmap)

用途:展示变量间的相关程度或数据的密度。

Python 示例

data = np.random.rand(10, 10)

sns.heatmap(data, annot=True)
plt.title('Heatmap Example')
plt.show()

4. 箱形图(Box Plot)

用于展示数据的分布和异常值。

Python 示例

data = np.random.rand(10, 5)

plt.boxplot(data)
plt.title('Box Plot Example')
plt.show()

5. 三维散点图(3D Scatter Plot)

用于在三维空间中展示数据点。

Python 示例

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard

6.三维曲面图

这种图表非常适合于展示有关两个自变量和一个因变量间复杂关系的数据。

Python 示例: 这是一个三维曲面图的示例,展示了一个由函数 z=sin⁡(x2+y2) 生成的曲面。使用了matplotlib的plot_surface方法来绘制曲面,并通过viridis色彩映射来增强视觉效果。以下是生成这个图形的Python代码:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

# 创建一个图形对象
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

# 生成数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

# 绘制三维曲面图
surf = ax.plot_surface(x, y, z, cmap=cm.viridis)

# 添加颜色条
fig.colorbar(surf)

# 设置标题
ax.set_title('3D Surface Plot')

# 显示图形
plt.show()

三维曲面的二维投影图

介绍:将三维曲面沿一个或多个轴投影到二维平面上,以查看曲面的不同视角。

示例代码:

fig = plt.figure()     
ax = fig.add_subplot(111)     
ax.contourf(x, y, z, cmap=cm.viridis)     
plt.show()

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

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

相关文章

座椅空置状态检测系统源码分享

座椅空置状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

大模型之基准测试集(Benchmark)-给通义千问2.0做测评的10个权威测基准测评集

引言 在去年(2023)云栖大会上&#xff0c;阿里云正式发布千亿级参数大模型通义千问2.0。据现场介绍&#xff0c;在10个权威测评中&#xff0c;通义千问2.0综合性能超过GPT-3.5&#xff0c;正在加速追赶GPT-4。以下是通义千问在MMLU、C-Eval、GSM8K、HumanEval、MATH等10个主流…

基于Springboot共享充电宝管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

openEuler普通用户su root时Permission denied

openEuler普通用户su root时Permission denied 背景&#xff1a; openEuler默认普通用户是不能通过su切换到root用户的 如果想通过su切换到root&#xff0c;有以下两个解决办法 1、修改/etc/pam.d/su 文件 [rootlocalhost ~]# vim /etc/pam.d/su #修改21行&#xff0c;将“…

视频怎么制作成二维码?视频轻松生成二维码的3步操作

现在很多人为了能够更快捷的实现视频内容的分享&#xff0c;会通过将视频生成二维码的方式&#xff0c;让其他人可以通过扫描二维码来查看视频内容。这种方式不需要用户存储视频&#xff0c;扫码就能够在设备上查看视频&#xff0c;有利于提升查看视频的便捷性&#xff0c;可以…

图片压缩工具免费怎么找?归纳了这几个压缩工具

有哪些图片压缩工具免费&#xff1f;在数字化时代&#xff0c;图像已成为我们生活中不可或缺的一部分。无论是网站设计、社交媒体分享还是文件传输&#xff0c;高质量的图片都扮演着重要的角色。但高质量往往意味着大文件体积&#xff0c;这可能会导致加载速度变慢或存储空间不…

打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台

前言 以太坊客户端收集大量数据&#xff0c;这些数据可以按时间顺序数据库的形式读取。为了简化监控&#xff0c;这些数据可以输入到数据可视化软件中。在此页面上&#xff0c;将配置 Geth 客户端以将数据推送到 InfluxDB 数据库&#xff0c;并使用 Grafana 来可视化数据。 一…

Android13中Android.mk和Android.bp预编译多种架构文件

需求&#xff1a; 1&#xff0c; 当前有多个架构的config文件&#xff0c;但是需要不同架构使用不同config文件 2&#xff0c; 必须将config文件拷贝到out/host目录下 常规思路 在Android.bp中&#xff0c; 一般在编译多架构文件时&#xff0c;都会使用arch属性&#xff…

Tauri 应用 input 输入自动大写问题定位解决

使用 Tauri React 开发 MinApi(http api接口测试工具) 时&#xff0c;在 Mac 系统中遇到一个很奇怪的问题&#xff1a;在 input 输入框中输入内容时&#xff0c;如果输入的是全小写英文字母&#xff0c;会自动将首字母转换为大写&#xff0c;效果如下图所示。 问题定位 经过排…

WebRTC关键技术及应用场景:EasyCVR视频汇聚平台高效低延迟视频监控解决方案

众所周知&#xff0c;WebRTC是一项开源的实时通信技术&#xff0c;它通过集成音频、视频和数据传输到Web浏览器中&#xff0c;使得实时通信变得简单且无需任何插件或第三方软件。WebRTC不仅是一个API&#xff0c;也是一系列关键技术和协议的集合&#xff0c;它的出现改变了传统…

代码随想录算法训练营Day14 | 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

目录 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度 226.翻转二叉树 题目 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例1&#…

Android下反调试与反反调试

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 反调试检测 反调试检测的几种方式。 1. TrackerId 首先&#xff0c;通过 IDA Pro 的调试器附加到当前 app 进程 关于IDA Pro调试android app的详细教程可以…

必应广告投放推广收费标准和流程

在当今竞争激烈的商业环境中&#xff0c;如何精准高效地推广产品与服务&#xff0c;成为企业面临的重大挑战。微软必应Bing广告平台&#xff0c;凭借其强大的技术实力和精准的数据分析能力&#xff0c;已成为众多企业广告推广的首选。云衔科技作为业界领先的数字化营销服务商&a…

【机器学习-无监督学习】聚类

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

安卓系统升级后,关于Fiddler工具不能抓取https接口问题

问题原因&#xff1f; 目前安卓手机可以抓取的https接口都在安卓7.0版本以下&#xff0c;有时候抓取Android7.0版本或以上的接口抓取不到 因为Android7.0之后常规手段不能抓Https的包&#xff0c;应用会默认不信任用户安装的证书(手机里自己安装的证书)&#xff0c;只信任系统…

最新版FaceFusion3.0.0,最强AI换脸,表情修改,视频换脸,年龄修改,多人换脸,面部遮挡换脸,参数调优

主要修改&#xff1a;表情修改,视频换脸,年龄修改,多人换脸,面部遮挡换脸,参数调优 变更日志 改造一切皆工作的建筑介绍pixel boost换脸者为面部检测器添加多角度处理引入年龄修正处理器推出 Live Portrait 表情恢复处理器推出由 Live Portrait 提供支持的脸部编辑处理器用res…

视频制作软件哪个好?前十名推荐!

在视频制作领域&#xff0c;选择合适的软件是提升创作效率和作品质量的关键。本文将根据软件的适用人群&#xff1a;新手入门和专业领域&#xff0c;以及推荐的书籍&#xff0c;为您详细介绍视频制作软件的前十名。 新手入门级别&#xff1a; 1.影忆 功能特点&#xff1a;新手入…

浙大数据结构:05-树9 Huffman Codes

这道题难度挺大&#xff0c;写起来较为费劲&#xff0c;这里我依然使用了STL库&#xff0c;使得代码量大幅减少不过百行&#xff0c;便于大家理解。 机翻&#xff1a; 1、条件准备 数组存储字符对应频率&#xff0c;n,student存储输入多少字符&#xff0c;有多少学生测试。 …

【Transformers基础入门篇2】基础组件之Pipeline

文章目录 一、什么是Pipeline二、查看PipeLine支持的任务类型三、Pipeline的创建和使用3.1 根据任务类型&#xff0c;直接创建Pipeline&#xff0c;默认是英文模型3.2 指定任务类型&#xff0c;再指定模型&#xff0c;创建基于指定模型的Pipeline3.3 预先加载模型&#xff0c;再…

用二维码收集信息时,在后台可以查看、统计哪些数据?

大家都知道&#xff0c;在二维码上关联表单&#xff0c;就可以扫码填写信息了。那么&#xff0c;收集到的数据在哪里查看&#xff1f;具体可以查看到哪些数据呢&#xff1f; 如果是用草料二维码平台搭建的二维码&#xff0c;前往后台&#xff0c;在表单列表中找到对应的表单&a…