2023美赛春季赛Y题保姆级思路代码

第一问:

开发一个数学模型来解释所提供电子表格中每艘帆船的标价。包括您认为有用的任何预测变量。您可以利用其他资源来了解给定帆船的其他特征(例如横梁、吃水、排水量、索具、帆面积、船体材料、发动机小时数、睡眠容量、净空高度、电子设备等)以及按年份的经济数据和地区

首先,可以对数据集进行清洗和处理,包括处理缺失值和异常值。可以使用 Excel 或其他数据分析工具进行数据清洗和预处理。

然后,可以进行变量选择和特征工程,选择可能与帆船价格相关的特征,并根据这些特征构建模型。例如,可以使用回归模型来解释帆船价格,其中可能的预测变量包括帆船长度、船体材料、发动机小时数、睡眠容量、电子设备等等。gzh数模孵化园

另外,可以利用其他数据资源,例如按年份的经济数据和地区,来增强模型的解释性和预测准确性。例如,可以考虑 GDP、人均收入、物价水平、汇率等因素,并结合地理位置和市场需求等因素对价格进行调整。

最后,可以使用统计软件或编程语言(如 Python 或 R)来实现建模过程,并使用交叉验证等技术来验证和测试模型的性能。在建模过程中,需要注意选择合适的算法、调整模型参数、处理共线性和非线性等问题。同时,建议使用可解释的模型,例如线性回归或决策树,以便更好地理解模型如何进行预测和解释。

具体步骤:

数据清洗和预处理:gzh数模孵化园

检查数据集中是否存在缺失值和异常值,根据需要进行处理。

对帆船长度、船体材料、发动机小时数、睡眠容量、电子设备等特征进行数据转换和标准化处理,例如将分类变量进行独热编码或哑变量处理,将连续变量进行标准化或归一化处理。

特征选择和构建模型:

根据业务理解和领域知识,选择可能与帆船价格相关的预测变量。

使用回归模型,例如线性回归、岭回归、lasso回归等,来建立帆船价格和预测变量之间的关系。

对模型进行调参和优化,例如选择最优的正则化系数、最小二乘法等。

增强模型的解释性和预测准确性:

利用其他数据资源,例如按年份的经济数据和地区,来增强模型的解释性和预测准确性。

根据经济数据和地区来对帆船价格进行调整,例如考虑 GDP、人均收入、物价水平、汇率等因素。gzh数模孵化园

考虑地理位置和市场需求等因素对价格进行调整,例如不同地区、不同市场的价格可能存在差异。

模型评估和验证:

使用交叉验证等技术来评估和验证模型的性能,例如均方根误差、平均绝对误差等指标。

对模型进行解释,分析模型对价格的影响,评估模型的预测能力和可解释性。

代码:

1.导入数据库

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error, r2_score

# 导入数据集

df = pd.read_excel('2023_MCM_Problem_Y_Boats.xlsx', sheet_name='Monohull')

2.数据清洗和处理:

# 删除缺失值

df.dropna(inplace=True)



# 对分类变量进行独热编码

df = pd.get_dummies(df, columns=['Manufacturer', 'Model', 'Region', 'Country'])



# 标准化连续变量

df['Length'] = (df['Length'] - df['Length'].mean()) / df['Length'].std()

df['Displacement'] = (df['Displacement'] - df['Displacement'].mean()) / df['Displacement'].std()

df['EngineHours'] = (df['EngineHours'] - df['EngineHours'].mean()) / df['EngineHours'].std()



# 分离特征和目标变量

X = df.drop(columns=['Price'])

y = df['Price']

3.特征选择和模型构建

# 分割数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)



# 建立线性回归模型

reg = LinearRegression()



# 拟合模型

reg.fit(X_train, y_train)



# 预测测试集

y_pred = reg.predict(X_test)



4.模型评估与验证:

# 评估模型性能

rmse = np.sqrt(mean_squared_error(y_test, y_pred))

r2 = r2_score(y_test, y_pred)



# 打印性能指标

print('RMSE:', rmse)

print('R2 Score:', r2)

.模型解释:

# 打印模型系数和截距

coef = pd.DataFrame({'Features': X.columns, 'Coefficients': reg.coef_})

print(coef)

print('Intercept:', reg.intercept_)

题目还要我们识别并描述所有使用的数据来源,这是咋回事?

她的意思是说叫我们弄明白那个文件是啥意思,我们只要在文章中给她整明白就行。

2023_MCM_Problem_Y_Boats.xlsx 文件:这是主要的数据来源,包括了大约 3500 艘 36 至 56 英尺长的帆船的数据,包括制造商、型号、长度、地理区域、国家/地区/州、标价和年份等信息。

为了补充和增强模型的解释性和预测准确性,可能需要使用其他来源的数据来提取帆船的其他特征,例如横梁、吃水、排水量、索具、帆面积、船体材料、发动机小时数、睡眠容量、净空高度、电子设备等。这些数据可能来自帆船制造商、第三方数据提供商、帆船协会等。

接着在经济数据和地区数据,为了更好地了解帆船市场,可能需要考虑按年份的经济数据和地区数据,例如 GDP、人均收入、物价水平、汇率等因素。这些数据可以来自官方数据统计机构、经济研究机构、世界银行等。公众号:数模孵化园

此外,背景中提到一位中国香港 (SAR) 的帆船经纪人委托建模团队准备一份关于二手帆船定价的报告。因此,可能还需要从经纪人处获得关于二手帆船市场的数据,例如销售价格、成交周期、交易量、市场趋势等。这些数据可以通过与经纪人的沟通和协商获得。

我给个具体示范例子:以提取帆船的其他特征为例:

审查和选择可用数据来源:首先需要寻找可用的数据来源,并审查数据的质量和可用性。可能的数据来源包括帆船制造商的官方网站、第三方数据提供商、帆船协会等。

确定需要的特征和变量:根据模型的需要,需要确定需要的特征和变量。这些特征和变量可能包括横梁、吃水、排水量、索具、帆面积、船体材料、发动机小时数、睡眠容量、净空高度、电子设备等。需要注意选择的特征和变量是否与价格相关,以及它们之间是否存在相关性。gzh数模孵化园

提取和处理数据:根据需要,从数据来源中提取和清洗所需的特征和变量数据。可能需要对数据进行转换和标准化处理,例如将分类变量进行独热编码或哑变量处理,将连续变量进行标准化或归一化处理。

整合和合并数据:将新提取的特征和变量数据与原始数据集进行整合和合并。需要确保合并后的数据集中的每一艘帆船都有完整的特征和变量信息。

进一步特征选择和模型构建:使用新的特征和变量数据来进一步进行特征选择和模型构建,以提高模型的解释性和预测准确性。需要注意选择的特征和变量是否与价格相关,以及它们之间是否存在相关性。

猜你喜欢

转载自blog.csdn.net/shumofuhuayuan/article/details/129880474