2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

这篇具有很好参考价值的文章主要介绍了2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023 MCM

Problem Y: Understanding Used Sailboat Prices

2023年MCM问题Y:了解二手帆船的价格

和许多奢侈品一样,帆船的价值会随着老化和市场条件的变化而变化。附件中所附的“2023_MCM_Problem_Y_Boats.xlsx”文件包括了2020年12月在欧洲、加勒比海和美国登广告出售的大约3500艘36至56英尺长的帆船的数据。

一、题目评价

典型的数据分析题目,考察预测模型,有现成数据,题目里多次提示可以自行增添相关数据,建议补充一些数据来辅助建模与分析。相对来说,本题难度不大,适合新手小白快速上手。

二、解题思路

1.数据清洗

1. 数据读取与观察:

由于原始excel编码为ansi,直接使用python读取会报错,需要用记事本打开转换编码格式为utf-8,转存为csv格式,再使用python的pandas包读取。

缺失值查看:

import pandas as pd
df1=pd.read_csv('Monohulled Sailboats.csv')
df2=pd.read_csv('Catamarans.csv')
print(df1.isnull().sum())
print(df2.isnull().sum())

输出结果:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

1

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

2

由此可见,sheet1“Monohulled Sailboats”中有3个缺失值,而sheet2“Catamarans”中无缺失值。通过excel的筛选,可以快速定位到缺失值:

Make Variant Length
(ft)
Geographic Region Country/Region/State Listing Price (USD) Year
Beneteau Oceanis 54 54 USA $479,805 2013
Delphia 46 cc 46 Europe $314,606 2013
Bavaria Cruiser 46 46 Europe $201,640 2014

接着我们通过绘制箱线图来查看数据的分布情况:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

Monohulled Sailboats

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

Catamarans

M类船的价格分布在200,000左右,C类船的价格分布在500,000左右

都存在个别偏离总体较明显的异常值,由于数据量本身不大,先标记保留。

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

数据合并:

我们观察到,两份数据的列名一致,仅仅是船的类型不同,不妨将两份数据合并成一份,便于后边的预测分析操作。

新建一列‘type’,数据为Monohulled Sailboats和Catamarans

#数据合并
df1['type']='Monohulled Sailboats'
df2['type']='Catamarans'
df=pd.concat([df1,df2])

数据扩充:

题目给出的数据特征很少,且大部分是离散的分类特征变量,这对于预测问题的帮助比较有限,而题目中提示的很精确(利用其他来源来了解给定帆船的附加特性(如横梁、吃水、位移、索具、帆面积、船体材料、引擎时间、睡眠能力、净空空间、电子设备等)。以及按年份和地区分列的经济数据)

比较好收集的数据便是经济数据

Europe 2518

USA 493

Caribbean 480

数据中主要涉及以上三个地区05-19年的数据,我们可以从《世界银行》World Bank Open Data | Data数据库中找到这些国家历年的经济数据(GDP)。

整理至‘GDP.csv’中

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

将其合并到df中

df_gdp=pd.read_csv('GDP.csv')
df=pd.merge(df,df_gdp,how='inner',on=['Geographic Region','Year'])

其他可能用到的数据Alubat Ovni 395 boats for sale - YachtWorld

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

2.开发一个数学模型,解释所提供的电子表格中每艘帆船的上市价格。

提到价格预测,不难想到多元线性回归模型。但是考虑到data中只有【船长度】和【价格】以及【年份】三个原始的数值型变量,题目中给出的【生产商】等分类变量难以直接利用。

所以我们应该先针对各细分类别的数据进行可视化分析。

根据之前的箱型图,我们就可以发现,单体帆船的整体价格比双体帆船的价格便宜一些。

所以我们首先对于【Make】列,即制造商进行分类探讨,首先利用value_counts函数统计出有多少个制造商:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

统计结果显示,给出的数据里有98家之多的制造商,且很多制造商只有1-2条数据,这对我们的分类数据观察分析没有帮助,设置阈值lowest_boats_num=20,只统计拥有超过20条船售价数据的生产商,筛选后得到:17家生产商

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

由于类别还是比较多,所以我们继续调大阈值调到100:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

由此我们可以相对比较直观地看出Lagoon制造商生产的船价格偏高,且随着年份,价格持续走高。

参考代码:

#数据可视化
df_maker=df['Make'].value_counts().to_frame()
df_maker=df_maker[df_maker['Make']>100]#设置阈值
lei=list(set(df_maker.index))
print(len(lei))
colors=['k','r','y','g','c','b','m','grey','coral','peru','tan','gold','olive','brown','lime','teal','cyan','blue'
        ,'navy','plum','pink','indigo','deepskyblue','crimson','hotpink','salmon','darkslategray','aquamarine','b','c']
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 15), dpi=100)
my_y_ticks = np.arange(0, 3000000, 100000)
plt.yticks(my_y_ticks)
for i in range(len(lei)):
    data1=df[df['Make']==lei[i]]
    plt.scatter(data1['Year'], data1['Listing Price (USD)'], c=colors[i], s=10, alpha=0.6, label=lei[i])
plt.xlabel("year", fontdict={'size': 16})
plt.ylabel("price", fontdict={'size': 16})
plt.title("the price of boat", fontdict={'size': 20})
plt.legend(loc='best')
plt.show()

与之同理,我们还可以查看【Variant】【Geographic Region】和【Country/Region/State】对应的价格散点图:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

图中显示,欧洲的价格显然偏高。

对应,我们对三个geographic的gdp进行对比分析:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

可以看出长远来看,gdp和船价格并没有明显的正相关关系。

为了更好地比较各类的价格,进行聚类的均值计算,在计算前需要把$xxx,xxx类数据转换成float型:

df['Listing Price (USD)']=df['Listing Price (USD)'].apply(lambda x: x[1:])
df['Listing Price (USD)']=df['Listing Price (USD)'].str.replace(',','').astype(float)
df.groupby(['Year','Geographic Region','type'])['Listing Price (USD)'].mean().to_csv('mean.csv')

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

在探讨完分类特征之后,我们对船长度与价格的关系进行分析:在忽略年份和类型的不同条件下直接计算相关性,发现相关性很弱,接着我们限制年份、类别,发现长度与价格可以看出有正相关性(比较长度越长成本就越高),但是并不是很明显的线性关系。

根据我们上述的分析,发现,单纯地使用多元线性回归预测虽然简单粗暴便于解释,但是并不能利用好给出的类别特征,也难以达到较高的准确度。

但是也不妨先做一下多元线性回归预测的方法,可以在写论文时使用两种方法进行对比:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

多元线性回归

于是可以采用随机森林的方法进行预测。

变量选取:

【Length (ft)】【Year】【GDP】【Make】【Variant】【Geographic Region】【Country/Region/State】【type】

其中我们需要对字符型变量进行转换:

转换方式为:

(1) 对于类别较少的特征【Geographic Region】和【type】,我们可以直接设为数字0/1/2和0/1,其中geographic的数字0/1/2按顺序依次赋给平均价格由低到高的国家

(2) 对于类别很多的特征【Make】【Variant】和【Country/Region/State】,我们分别统计其类别出现的次数以及平均值:

然后对于具有显著的【贵】或者【便宜】特征的类别进行标记,其他的类记为0.

例如:【Make】中[Privilege, Southerly, Bali, HH Catamarans, Discovery, Nautor, Nautitech, Lagoon]价格偏贵,标记1,而[Beneteau, Dufour, Elan, Bavaria, Dehler, Van De Stadt]价格偏便宜,标记-1,其余标记0

数据处理好后长这样:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

接着进行随机森林预测:

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

至于精度则可以用rmse来衡量。

from sklearn import metrics
y = np.array([1,1])
y_hat = np.array([2,3])
MSE = metrics.mean_squared_error(y, y_hat)
RMSE = metrics.mean_squared_error(y, y_hat)**0.5
MAE = metrics.mean_absolute_error(y, y_hat)
MAPE = metrics.mean_absolute_percentage_error(y, y_hat)

2.用你的模型来解释地区对上市价格的影响。讨论是否有任何区域效应在所有的帆船变异中是一致的

根据我们随机森林得到的结果,探讨各区域特征对预测的影响程度。

除了已有的区域类别、GDP特征难以模拟影响的全面性,因此我们根据数据的可获得性收集以下数据:

【GDP】【货运吞吐量】-世界银行

【船只总量】【船舶市场营收】-《2019全球海运发展评述报告》

这些都是可以代表区域特征的数据。

将这些数据导入随机森林模型,观察预测模型的变化。

3.您对特定地理区域的建模如何在香港(SAR)市场中有用

根据前面两问,我们知道,GDP、年份、船的类型都跟预测有关系。

如何验证在香港地区的作用则需要找到香港的数据集。

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

我们只需要将随机森林输出的模型中代入新的GDP年份对应数据即可获得SAR的船预测模型。

然后按照前述方法进行数据转换,生成datafortrain2

代入随机森林模型进行训练,这时我们可以直接删除掉几乎无影响的特征。

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享

4。这对双体船和单壳帆船的效果都是一样的吗?

是不一样的,最开始的分析中可以看出类型的不同,输出的定价模型也不同。所以我们要保留type特征列,为了验证其影响,可以删除type列观察rmse变化情况,或者进行数据分类,对比两类的模型输出结果。文章来源地址https://www.toymoban.com/news/detail-414084.html

具体思路步骤代码及参考数据整理好放在评论区,如失效请私信获取~

到了这里,关于2023年美国大学生数学建模MCM问题Y:了解二手帆船的价格-解题思路及代码分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年美国大学生数学建模竞赛C题预测Wordle的结果解题全过程文档及程序

       背景介绍    Wordle是纽约时报目前每天提供的一个流行谜题。玩家通过在六次或更短时间内猜出一个至五个字母的单词来解决这个谜题,每次猜测都会得到反馈。在这个版本中, 每个猜测必须是一个实际的英文单词。不允许猜测不被比赛认可的单词。Wordle继续受到欢迎

    2024年02月05日
    浏览(77)
  • 2023年美国大学生数学建模竞赛B题重塑马赛马拉的形象解题全过程文档及程序

       背景介绍    肯尼亚的野生动物保护区最初主要是为了保护野生动物和其他自然资源而设立的。肯尼亚议会通过了2013年《野生动物保护和管理法》, 以提供更公平的资源共享,以及允许替代的、基于社区的管理努力。此后,肯尼亚增加了修正案,以解决立法中的漏洞

    2024年02月05日
    浏览(46)
  • 基于overleaf 的美国大学生数学建模竞赛(美赛)latex 格式模板(含信件和附件)

    可能是最后一次打美赛了,感觉有的东西不整理整理有点对不起自己的经历。感觉为这个比赛付出过挺多的,这几次参赛的经历也从各种方面提升了我的能力,相信未来的自己也还会怀念这段时光。 个人认为美赛的难点之一就是优质资源难得,不知道自己的整理算不算优质资

    2024年02月04日
    浏览(48)
  • 2023年“华数杯”国际大学生数学建模竞赛思路

    B题完整思路已出! 所有资料请在群直接拿,谢谢。 https://zhuanlan.zhihu.com/p/603048568 注意:现在给出的是常用数据集,本次比赛的数据还在准备中哦~) 为此,小云也准备好了一些常用的数据集,都放在云里啦,这样可以避免比赛的时候找数据手忙脚乱。(感兴趣的小伙伴可以

    2024年02月12日
    浏览(64)
  • 2023 大学生数学建模竞赛-C题-第一问

    题目: 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜品种众多、产地不尽相同,而蔬菜的进货交易

    2024年02月09日
    浏览(53)
  • 2023华数杯全国大学生数学建模竞赛思路模型代码

    目录 1.华数杯数学建模大赛简介 2.大赛思路模型代码见文末        比赛时间:2023.8.3———2023.8.6         比赛性质: 国家级,暑假期间含金量和比赛规模都不错的数学建模比赛,目前举办到第四届,规模一年比一年大,参与人数越来越多,认可度越来越高,赛题类型和赛

    2024年02月14日
    浏览(65)
  • 2023高教社杯全国大学生数学建模竞赛选题建议

    如下为C君的2023高教社杯全国大学生数学建模竞赛(国赛)选题建议, 提示:DS C君认为的难度:CBA,开放度:BAC   。 D、E题推荐选E题,后续会直接更新E论文和思路,不在这里进行选题分析,以下为A、B、C题选题建议及初步分析 A题:定日镜场的优化设计 A题是数模类赛事很

    2024年02月09日
    浏览(54)
  • 2023全国大学生数学建模竞赛C题思路+模型+代码+论文

    目录 一.思路模型见文末名片,比赛开始第一时间更新 二.国赛常用算法之主成分分析法(PCA) 三.MATLAB代码 代码相对简单,是从司守奎大神的《数学建模算法与应用》一书中学习到的,笔者只不过添加了一点注释,拾人牙慧,惭愧惭愧。将代码文件和txt文件放在一个文件夹中就

    2024年02月09日
    浏览(105)
  • 2023年高教社杯全国大学生数学建模竞赛参赛事项注意

    一年一度的数学建模国赛要来啦!!!小编仔细阅读了比赛官方网站上的规则和要求,以及比赛的题型和时间安排,现总结分享给大家。 小编将会在开赛后第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考成品论文等多项资料,帮助大家取得好成绩哦

    2024年02月09日
    浏览(100)
  • 2023高教社杯全国大学生数学建模竞赛B题代码解析

    2023高教社杯全国大学生数学建模竞赛B题 多波束测线问题 代码解析 因为一些不可抗力,下面仅展示部分matlab代码(第一问的部分),其余代码看文末 节选了部分: 有关思路、相关代码、讲解视频、参考文献等相关内容可以点击下方群名片哦!

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包