2023mathorcup D题完整代码 妈妈杯数学建模挑战赛

您所在的位置:网站首页 excel箱线图绘制多个变量 2023mathorcup D题完整代码 妈妈杯数学建模挑战赛

2023mathorcup D题完整代码 妈妈杯数学建模挑战赛

2023-04-15 07:27| 来源: 网络整理| 查看: 265

2023mothercup妈妈杯D题数学建模挑战赛全部思路代码已更新

航空安全风险分析和飞行技术评估问题

下面将给出第一问的核心以及其可视化,欢迎大家一起交流学习~

https://www.jdmm.cc/file/2709024/

#!/usr/bin/env python # coding: utf-8 # In[270]: import pandas as pd from sklearn.preprocessing import LabelEncoder import seaborn as sns import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.cluster import DBSCAN import numpy as np from sklearn.ensemble import RandomForestRegressor # In[ ]: #交流群:810842828 #千千小屋版权所有 # In[154]: #针对第一个飞机进行分析 用excel打开附件1中的数据之后再另存为xlsx文件 data = pd.read_excel(r"D:/2023年MathorCup高校数学建模挑战赛赛题/D题/附件/附件1 关键参数的航段数据/1.xlsx") # # 数据预处理 # In[155]: data_1 = data.iloc[2:].reset_index(drop=True) # In[261]: data_1.head(5) # In[263]: data_1.info() # In[262]: data_1['time'] = data_1.index.values #由于数据项是按时间排列的,可以构建时间特征项 # In[158]: data_1[' GEAR SELECT DOWN'] = data_1[' GEAR SELECT DOWN'].map({'DOWN': 1}) #对起落架这一数据项进行编码 data_1[" GEAR SELECT DOWN"].fillna(0, inplace = True) # In[217]: data_1['A/T ENGAGED'] = data_1['A/T ENGAGED'].map({'DISENGD':0,'ENGAGED':1}) # In[219]: data_1['ANY A/P ENGAGED'] = data_1['ANY A/P ENGAGED'].map({'OFF':0,'ON':1}) # In[166]: #将数据中的True和False编码为0-1变量 data_1 = data_1.replace({'False': 0, 'True': 1}) bool_cols = data_1.select_dtypes(include='bool').columns # 选取布尔型列 data_1[bool_cols] = data_1[bool_cols].astype(int) # 将布尔型列转换为整型 # In[168]: #将起落机场编码为数字 data_1['DEPARTURE AIRPORT'] = data_1['DEPARTURE AIRPORT'].map({'机场68': 68}) data_1['DESTINATION AIRPORT'] = data_1['DESTINATION AIRPORT'].map({'机场117': 117}) # # 第一题 # ## 数据质量检测 # In[171]: # 计算每个列中空值的占比 null_percent = data_1.isna().mean() # In[173]: null_percent.values # In[174]: ''' #如果数据中有空值,则可以利用以下代码进行绘图 null_percentages.plot(kind='bar') plt.xlabel('Columns') plt.ylabel('Null Percentage') plt.title('Null Percentage of each Column') plt.show() ''' # In[196]: #对单个特征进行异常值检测 -箱线图 #可以选取一些关键特征绘制箱线图 以下是两个示例 sns.boxplot(x=data_1['COG NORM ACCEL']) # In[199]: sns.boxplot(x=data_1['COG NORM ACCEL.1']) # In[244]: #也可以通过聚类算法筛选异常值 pca = PCA(n_components=2) #对数据进行PCA降维 pca.fit(data_1.iloc[:,3:64]) X_pca = pca.transform(data_1.iloc[:,3:64]) # In[245]: #利用DBSCAN算法进行聚类,也可以更换聚类方法 dbscan = DBSCAN(eps=0.8, min_samples=2) dbscan.fit(X_pca) # In[246]: plt.scatter(X_pca[:, 0], X_pca[:, 1], c=dbscan.labels_) plt.show() # 计算异常值比例 outlier_ratio = np.sum(dbscan.labels_ == -1) / len(dbscan.labels_) print('异常值比例:', outlier_ratio) # ## 特征选取和重要程度分析 # In[265]: data_1.head(5) # In[276]: data_1['Max_G'] = data_1.iloc[:,14:24].max(axis=1) #构造每秒钟的最大着陆G值作为预测变量 y = data_1['Max_G'] X = data_1.iloc[:,3:65] #其余特征为自变量 # In[277]: rf = RandomForestRegressor(n_estimators=100) #构建随机森林回归模型 rf.fit(X, y) importances = rf.feature_importances_ #输出特征重要程度



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3