1.比赛报名与思路解析(持续更新750967193)

2.比赛时间:2022年9月15日18点到2022年9月18日20点

如下为C题思路的配套代码:

首先导入表单:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=Falsedf_表单1 = pd.read_excel('附件.xlsx', sheet_name='表单1')
df_表单2 = pd.read_excel('附件.xlsx', sheet_name='表单2')
df_表单3 = pd.read_excel('附件.xlsx', sheet_name='表单3')

画出各个属性占比图

fig=plt.figure(figsize=(10,10))
i=1
for column in df_表单1.columns[1:]:data ={elem:np.sum(df_表单1[column]==elem) for elem in df_表单1[column].unique()}ax=fig.add_subplot(2,2,i)i+=1ax.pie(data.values(), labels=data.keys(), autopct='%1.2lf%%', pctdistance=0.5)ax.set_title(column+'占比图')
plt.savefig('各属性数量占比图.png')
plt.show()

可以对数据采用如下方式处理:

  1. 空白处表示未检测到该成分,即该成分的含量为0,所以对于表单2中所用的控制用0进行填充;
  2. 对于‘文物采样点’进行分开处理,分开为‘文物编号’,采样点;
  3. 将成分之和不在区间[85,105]范围内的删除;
  4. 各成分含量之和应为100%,但因检测手段等原因加和并非100%,所以对各成分进行归一化处理,使其成分含量和为100%
df_表单2 = pd.read_excel('附件.xlsx', sheet_name='表单2')
df_表单2['采样点']=df_表单2['文物采样点'].apply(lambda x:x[2:])
df_表单2['文物编号']=df_表单2['文物采样点'].apply(lambda x:x[:2])
df_表单2=df_表单2.fillna(0)
print(df_表单2.shape)
df_表单2['总含量']=df_表单2[df_表单2.columns[1:15]].sum(axis=1)
index = df_表单2[df_表单2['总含量']<85].index
df_表单2=df_表单2.drop(index=index)
print(df_表单2.shape)
index = df_表单2[df_表单2['总含量']>105].index
df_表单2=df_表单2.drop(index=index)
print(df_表单2.shape)
for column in df_表单2.columns[1:15]:df_表单2[column]=df_表单2[column]/df_表单2['总含量']*100
df_表单2.head()

然后合并1、2表单:

df_表单1['文物编号']=df_表单1['文物编号'].astype('str')
df_表单1['文物编号']=df_表单1['文物编号'].apply(lambda x:'0'*(2-len(x))+x)
df_表单1.index=df_表单1['文物编号']
columns = ['纹饰', '类型', '颜色', '表面风化']
df_表单2[columns]=''
for i in df_表单2.index:index = df_表单2['文物编号'][i]for column in columns:df_表单2.loc[i,column]=df_表单1[column][index]
df_表单2['颜色'].unique()
dic = {'风化':1,'无风化':0,'A':1,'C':0,  # 这里未对B进行转换,不过在apriori的地方使用的是汉字不影响,后续也没有使用'高钾':1,'铅钡':0,  '蓝绿':0, '浅蓝':1, '紫':2, '深绿':3, '深蓝':4, '浅绿':5, '黑':6, '绿':7}
df_表单2['是否风化']=df_表单2['表面风化'].apply(lambda x:dic.get(x))
df_表单2['类型是否高钾']=df_表单2['类型'].apply(lambda x:dic.get(x))
df_表单2['纹饰A']=df_表单2['纹饰'].apply(lambda x:dic.get(x))
df_表单2['颜色编号']=df_表单2['颜色'].apply(lambda x:dic.get(x))
columns = ['文物编号','采样点','是否风化','类型是否高钾','纹饰A','颜色编号']
columns.extend(df_表单2.columns[1:15])
df = df_表单2[columns]
df.to_excel('表单1-2合并.xlsx')
df

得到完整的合并表单:

各成分占比:

plt.figure(figsize=(10,10))
data = df[df.columns[5:]].mean()
print(data[data<=1].index)
value = list(data[data>1].values)+[sum(data[data<=1].values)]
labels = list(data[data>1].index)+['其他']
plt.pie(value, labels=labels, autopct='%1.2lf%%')
plt.savefig('各成分平均占比图.png')
plt.show()

df1 = df[df['类型是否高钾']==1]
plt.figure(figsize=(10,10))
data = df1[df1.columns[5:]].mean()
print(data[data<=1].index)
value = list(data[data>1].values)+[sum(data[data<=1].values)]
labels = list(data[data>1].index)+['其他']
plt.pie(value, labels=labels, autopct='%1.2lf%%')
plt.savefig('类型为高钾的成分占比图.png')
plt.show()

此图为:类型为高钾的成分占比图

画出热力图:

sns.heatmap(df[df.columns[1:5]].corr())
plt.savefig('风化,纹饰,颜色,类型相关性热力图.png')
plt.show()

所有属性热力图

以上仅为部分数据预处理内容,第二问小部分内容摘选:

df['亚类']=''
高钾亚类 = ['高钾亚类'+str(i) for i in 高钾kmeans[1]]
铅钡亚类 = ['铅钡亚类'+str(i) for i in 铅钡kmeans[1]]
df.loc[高钾_df.index,'亚类']=高钾亚类
df.loc[铅钡_df.index,'亚类']=铅钡亚类
df.to_excel('所有文物分别按亚类分类表.xlsx')

以上仅为部分数据预处理内容和摘选的第二问的小部分内容

2022高教社杯数学建模国赛C题思路代码实现相关推荐

  1. 2021年高教杯数学建模国赛C题思路详解

    已更新 C 题 生产企业原材料的订购与运输 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料, 总体可分为A,B,C 三种类型.该企业每年按 48 周安排生产,需要提前制定 24 ...

  2. 【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(已经更新完毕)

    更新进展 2022-9-16 16:30 ,更新内容,问题二可视化及代码 2022-9-16 22:30 ,更新内容,问题三.四可视化及代码, 2022-9-17 12:11 ,更新内容,对四个问题求 ...

  3. 2022数学建模国赛ABC题思路

    2022年数学建模国赛ABC题思路 a题:添加链接描述 b题: 添加链接描述 c题: 基础版+进阶版 c题:进阶版 e题: 添加链接描述

  4. 2020年数学建模国赛C题完整代码下载链接处

    2020年数学建模国赛C题完整代码 因为私信找小编要论文的友友们实在太多了,所以这里直接开源2020年高教社杯数学建模C题的完整代码如下: 需要的小伙伴们,可以利用百度网盘来提取相关资料 ~~ ~~ ...

  5. 2021年数学建模国赛C题思路

    2021年高教社杯数学建模竞赛C题思路 小编曾获得建模国二,虽然今年没能获得国奖,但是想把自己的思路分享给各位建模友友 一.问题重述 1.1 问题背景 在工业生产上,生产企业的原材料订购和运输问题非常 ...

  6. 2022高教社杯数学建模思路 - 复盘:中小微企业的信贷决策

    2022 高教社杯(国赛数学建模)思路解析 2022高教社杯ABCD赛题思路解析: https://blog.csdn.net/dc_sinor/article/details/126211983 数 ...

  7. 2022高教社杯数学建模思路 - 案例:BIRCH-层次聚类算法

    2022 高教社杯(国赛数学建模)思路解析 2022高教社杯ABCD赛题思路解析: https://blog.csdn.net/dc_sinor/article/details/126211983 1 ...

  8. 2022高教社杯数学建模思路 - 案例:异常检测

    2022 高教社杯(国赛数学建模)思路解析 2022高教社杯ABCD赛题思路解析: https://blog.csdn.net/dc_sinor/article/details/126211983 一 ...

  9. 2022高教社杯数学建模思路 - 案例:ID3算法

    2022 高教社杯(国赛数学建模)思路解析 2022高教社杯ABCD赛题思路解析: https://blog.csdn.net/dc_sinor/article/details/126211983 1 ...

最新文章

  1. 关于性能测试的通俗解释
  2. 【LeetCode】剑指 Offer 65. 不用加减乘除做加法
  3. freemarker+生成java_Freemarker + xml 实现Java导出word
  4. 使用构建器模式来帮助您的单元测试
  5. 深度学习————如何在Python中求解函数的解析表达式
  6. Linux grep
  7. VM中的Linux安装jdk和tomcat
  8. 关于求最长子串,使得最大减最小小于k的问题-以POJ4003为例
  9. Anroid性能优化系列——Improving Layout Performance(二)
  10. arm汇编指令之数据块传输(LDM,STM)详见
  11. windows mysql memcached,Windows上的Memcached(不是memcache)PHP扩展
  12. Java毕业设计-电影影评管理系统
  13. java实现随机抽取题目_随机抽取样本问题蓄水池算法按权重抽取问题
  14. 生物特征识别:小面积指纹识别算法(三)
  15. 敏感词检测软件-在线敏感词批量检测免费
  16. 哈霍兰服务器修改WCL记录,魔兽世界:怀旧服哈霍兰服务器再创纪录,最强“刷子”六天刷出420万荣誉...
  17. 哪些业务需要使用CDN加速服务?
  18. 记录一次jar文件在windows系统下开机自启
  19. Ext_多行文本输入框_Ext.form.TextArea
  20. 项目笔记 【调查问卷】

热门文章

  1. 这短短的理念关于住宅屋面构造
  2. 装修以后很快后悔的80件事(房子装修前必看)
  3. DSAPI显示PNG异形窗体
  4. python游戏之圣杯战争(简单版)
  5. wiki中文语料下载及繁体转简体的处理。
  6. wireshark官方文档第 9 章数据包解析
  7. 微信三方代开发公众号消息管理-群发消息
  8. ES2中关于索引模板的操作
  9. 三、Diff-Serv模型
  10. 阿里云智能视觉首席研究员华先胜:视觉大数据智能分析、识别和搜索