2023 年“创思杯”安徽省数学建模高校联赛C题安徽大学生出行行为选择方式建模 解题思路代码

本文探讨了城市公共交通满意度的关键因素,如等待时间、费用、时间效率和可靠性,通过问卷调查和数学模型分析,以优化公共交通服务。研究涉及数据预处理、不同变量的量化建模,以及缺失值预测,为提升公共交通体验提供策略建议。
摘要由CSDN通过智能技术生成

1. 引言

随着城市化的加速,公共交通服务在人们日常生活中扮演着越来越重要的角色。然而,乘客对公共交通的满意度往往受到多种因素的影响,其中等待时间和实际通行时间的预期与实际体验之间的差距是一个关键问题。本研究旨在通过深入的问卷调查和数学建模,分析影响个人公共交通出行行为选择的因素,为公共交通服务的优化提供有价值的参考和建议。

2. 问题分析

T1:数据整理与预处理

首先,需要整理原始数据集,并进行数据预处理。这包括数据的清理、缺失值的处理、异常值的检测与修正等步骤。选择合适的样本进行研究是至关重要的,因为良好的样本能够更好地代表整体群体。

T2:变量指标量化建模

2.1 价格性变量

价格性变量主要体现为总的出行费用。可以通过对票价、交通工具选择对总费用的影响等方面进行分析,建立数学模型。

2.2 时间性变量

时间性变量包括车辆频率、出行里程、等待时间、运输时间、换乘时间、首尾时间等。这些指标可以通过对实际数据的分析来计算,以便更好地理解时间对个人出行行为选择的影响。

2.3 稳定性(可靠性)变量

稳定性变量源自多种主客观因素,如拥挤、事故、发车延误等。通过研究车辆延误时间的统计特性,比如均值、统计区间、样本方差等,可以建立稳定性的数学模型。

2.4 舒适度变量

舒适度变量包括可获得性、拥挤舒适度、环境舒适度、座位舒适度等。通过调查问卷以及主观评价数据,可以对这些变量进行量化分析。

T3:探究各变量的单一和综合作用

将影响个人公共交通出行行为的因素分为价格性、时间性、可靠性和舒适度四种类型。通过深入分析各变量的单一作用以及它们的综合作用,可以揭示出对个人出行选择的主要影响因素。

T4:数据缺失值的预测

根据问题描述,部分数据表中的交通方式和交通出行方案被删除,需要进行预测。可以使用机器学习算法,如回归模型或者决策树模型,基于其他已有数据对缺失值进行合理的预测。

3. 详细思路与代码

3.1 数据整理与预处理

首先,加载数据并进行初步的数据探索,了解数据的结构和特征。检查缺失值、异常值,并进行适当的处理。

import pandas as pd
import numpy as np

# 加载数据
data = pd.read_csv("your_dataset.csv")

# 数据探索
print(data.info())

# 处理缺失值
data = data.dropna()

# 处理异常值
# ...

# 数据预览
print(data.head())

3.2 变量指标量化建模

3.2.1 价格性变量建模
# 建立价格性变量模型
from sklearn.linear_model import LinearRegression

X_price = data[['Ticket_Price', 'Transport_Mode']]
y_price = data['Total_Expenses']

model_price = LinearRegression()
model_price.fit(X_price, y_price)

# 打印模型系数
print("Coefficients:", model_price.coef_)
3.2.2 时间性变量建模
# 计算时间性变量
data['Total_Time'] = data['Wait_Time'] + data['Travel_Time'] + data['Transfer_Time']

# 建立时间性变量模型
from sklearn.ensemble import RandomForestRegressor

X_time = data[['Vehicle_Frequency', 'Travel_Distance', 'Wait_Time', 'Total_Time']]
y_time = data['Individual_Travel_Time']

model_time = RandomForestRegressor()
model_time.fit(X_time, y_time)

# 特征重要性
print("Feature Importances:", model_time.feature_importances_)
3.2.3 稳定性(可靠性)变量建模
# 计算稳定性变量
data['Delay_Stats'] = data[['Delay_Mean', 'Delay_Variance']].mean(axis=1)

# 建立稳定性变量模型
from sklearn.cluster import KMeans

X_stability = data[['Delay_Mean', 'Delay_Variance', 'Delay_Stats']]
kmeans = KMeans(n_clusters=2)
data['Stability_Cluster'] = kmeans.fit_predict(X_stability)

# 聚类结果
print(data['Stability_Cluster'].value_counts())
3.2.4 舒适度变量建模
 
# 建立舒适度变量模型
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
data[['Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']] = scaler.fit_transform(data[['Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']])

3.3 探究各变量的单一和综合作用

3.3.1 单一作用分析

通过可视化和统计分析,分析每个变量对个人出行行为选择的单一作用。

import matplotlib.pyplot as plt
import seaborn as sns

# 价格性变量对出行选择的影响
sns.scatterplot(x='Ticket_Price', y='Total_Expenses', data=data)
plt.xlabel('Ticket Price')
plt.ylabel('Total Expenses')
plt.show()

# 时间性变量对出行选择的影响
sns.scatterplot(x='Total_Time', y='Individual_Travel_Time', data=data)
plt.xlabel('Total Time')
plt.ylabel('Individual Travel Time')
plt.show()

# 稳定性变量对出行选择的影响
sns.countplot(x='Stability_Cluster', data=data)
plt.xlabel('Stability Cluster')
plt.show()

# 舒适度变量对出行选择的影响
sns.boxplot(data=data[['Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']])
plt.xlabel('Comfort Variables')
plt.show()
3.3.2 综合作用分析

通过建立综合模型,如回归模型,来揭示各变量综合作用对个人出行行为选择的影响。

# 建立综合模型
X_combined = data[['Ticket_Price', 'Total_Time', 'Stability_Cluster', 'Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']]
y_combined = data['Travel_Choice']

from sklearn.linear_model import LogisticRegression

model_combined = LogisticRegression()
model_combined.fit(X_combined, y_combined)

# 打印模型系数
print("Coefficients:", model_combined.coef_)

3.4 数据缺失值的预测

使用机器学习算法进行缺失值的预测,以确保数据的完整性。

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 分离有缺失值的数据和无缺失值的数据
data_missing = data[data['Traffic_Mode'].isnull()]
data_no_missing = data.dropna(subset=['Traffic_Mode'])

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data_no_missing[['feature1', 'feature2', ...]], data_no_missing['Traffic_Mode'], test_size=0.2, random_state=42)

# 训练线性回归模型
model_missing = LinearRegression()
model_missing.fit(X_train, y_train)

# 预测缺失值
missing_predictions = model_missing.predict(data_missing[['feature1', 'feature2', ...]])

# 将预测值填充回原数据
data.loc[data['Traffic_Mode'].isnull(), 'Traffic_Mode'] = missing_predictions

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2024年数学建模国赛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值