前言/背景

我参加过的数学建模比赛没拿过奖,我准备大量的参加数学建模比赛,不断的积累经验,虽然我现在很菜,但我就是那种又菜又爱玩的人,输了又能怎么样,我只在乎过程中我学到了什么,当然得奖才是我的动力。我相信在未来我能拿到一个属于自己认可的奖。

大赛简介

我就参加过这一个比赛。

参赛流程

首先,需要一个有能力的队伍,一个可以编程能力,一个可以论文演讲,一个可以数学算法。然后每个人又对其他两个有点了解,这样的队伍我觉得就很舒服。其次,就是三个人都要有激情,不能有负能量,团队要有凝聚力,这样大家在冲刺时,遇到问题时,熬夜时,才不会抱怨,影响大家的热情。最后,这个非常重要,就是比赛前的准备,要准备些什么呢,比如比赛的常用算法代码可以准备一下吧,还有写论文的工具的使用方法,排版等。

参赛经历

我比赛时,没有团队,因为要求要两个人以上才能参加,我就拉了一个人来凑数。所以我一个人在完成编程后,就没有什么时间去写论文了,最后还有很多点都没有写完,就连排版都没有做好,问题是解决了,但论文写不好,都是白扯。

经验心得

团队很重要!团队很重要!团队很重要!

资料分享

下面分享一下数据分析部分内容。

首先是加载数据

略…………

将特征表与标签表聚合拼接

# 聚合数据
df_1 = pd.merge(bhv_train,cust_train)
train = pd.merge(df_1,train_label)
test = pd.merge(bhv_test,cust_test)

查看维度

#  样本个数和特征维度
train.shape  #(7206, 34)
test.shape   #(1655, 34)

.查看特征名

# 查看特征名
train.columns
test.columns

因为比赛提供的是脱敏数据,所以我们就不知道这些特征具体是什么意思。

# 查看数据集的一些基本信息
train.info()

train.head().T

# 查看一下数据的描述性分析
train.describe().T

以上可以让我们更了解数据

下面对数据类型分析

# 数值类型
numerical_feature = list(train.select_dtypes(exclude=['object']).columns)
numerical_feature
len(numerical_feature)  ## 34
# 连续型变量
serial_feature = []
# 离散型变量
discrete_feature = []
# 单值变量
unique_feature = []for fea in numerical_feature:temp = train[fea].nunique()# 返回的是唯一值的个数if temp == 1:unique_feature.append(fea)# 自定义变量的值的取值个数小于10就为离散型变量    elif temp <= 10:discrete_feature.append(fea)else:serial_feature.append(fea)
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#每个数字特征得分布可视化
f = pd.melt(train, value_vars=serial_feature)
g = sns.FacetGrid(f, col="variable",  col_wrap=3, sharex=False, sharey=False)
g = g.map(sns.distplot, "value")

plt.figure(1 , figsize = (8 , 5))
sns.distplot(train.A3,bins=40)
plt.xlabel('A3')

discrete_feature

['label']

import seaborn as sns
import matplotlib.pyplot as plt
df_ = train[discrete_feature]# 离散型变量
sns.set_style("whitegrid") # 使用whitegrid主题
fig,axes=plt.subplots(nrows=1,ncols=1,figsize=(8,10))# nrows=4,ncols=2,括号加参数4x2个图
for i, item in enumerate(df_):plt.subplot(4,2,(i+1))ax=sns.countplot(item,data = df_,palette="Pastel1")plt.xlabel(str(item),fontsize=14)   plt.ylabel('Count',fontsize=14)plt.xticks(fontsize=13)plt.yticks(fontsize=13)#plt.title("Churn by "+ str(item))i=i+1plt.tight_layout()
plt.show()

label=train.label
label.value_counts()/len(label)

train_positve = train[train['label'] == 1]
train_negative = train[train['label'] != 1]
f, ax = plt.subplots(len(numerical_feature),2,figsize = (10,80))
for i,col in enumerate(numerical_feature):sns.distplot(train_positve[col],ax = ax[i,0],color = "blue")ax[i,0].set_title("positive")sns.distplot(train_negative[col],ax = ax[i,1],color = 'red')ax[i,1].set_title("negative")
plt.subplots_adjust(hspace = 1)

 缺失值查看

# 去掉标签
# X_missing = train.drop(['label'],axis=1)
X_missing =test
# 查看缺失情况
missing = X_missing.isna().sum()
missing = pd.DataFrame(data={'特征': missing.index,'缺失值个数':missing.values})
#通过~取反,选取不包含数字0的行
missing = missing[~missing['缺失值个数'].isin([0])]
# 缺失比例
missing['缺失比例'] =  missing['缺失值个数']/X_missing.shape[0]
missing.to_csv("2455.csv")
# 可视化
s=(train.isnull().sum()/len(train)).plot.bar(figsize = (20,6),color=['#d6ecf0','#a3d900','#88ada6','#ffb3a7','#cca4e3','#a1afc9'])# 可以看到,所有的特征缺失值都在10%以内,这里考虑全部保留。

异常值处理


# 数值类型
numerical_feature = list(train.select_dtypes(exclude=['object']).columns)
def find_outliers_by_3segama(data,fea):data_std = np.std(data[fea])data_mean = np.mean(data[fea])outliers_cut_off = data_std * 3lower_rule = data_mean - outliers_cut_offupper_rule = data_mean + outliers_cut_offdata[fea+'_outliers'] = data[fea].apply(lambda x:str('异常值') if x > upper_rule or x < lower_rule else '正常值')return data
data_train = train.copy()
for fea in numerical_feature:data_train = find_outliers_by_3segama(data_train,fea)print(data_train[fea+'_outliers'].value_counts())print(data_train.groupby(fea+'_outliers')['label'].sum())print('*'*10)

# 检索异常值
fig,ax=plt.subplots(figsize=(15,5))
train.boxplot()

#使用拉依达准则(3σ准则)
import numpy as np
import pandas as pd
#设置需读取文件的路径data =train
# 记录方差大于3倍的值
#shape[0]记录行数,shape[1]记录列数
sigmayb = [0]*data.shape[0]
for i in range(1,data.shape[1]):print("处理第"+str(i)+"行")# 循环 每一列lie = data.iloc[:, i].to_numpy()print(lie)mea = np.mean(lie)s = np.std(lie, ddof=1)# 计算每一列 均值 mea 标准差 sprint("均值和标准差分别为:"+str(mea)+" "+str(s))#统计大于三倍方差的行for t in range(1,data.shape[0]):if (abs(lie[t]-mea) > 3*s):print(">3sigma"+" "+str(t)+" "+str(i))#将异常值置空if i != 33:data.iloc[t,i]= np.nan# 将处理后的数据存储到原文件中
train=data

数据相关关系

f, ax = plt.subplots(1,1, figsize = (20,20))
cor = train[numerical_feature].corr()
sns.heatmap(cor, annot = True, linewidth = 0.2, linecolor = "white", ax = ax, fmt =".1g" )

#查看变量与标签的相关性
train.corr()["label"].sort_values()

以上就是数据分析EDA的一些部分过程分享。

具体分析就不说了,只能分享操作。

【CSDN创作话题 】竞赛那些事相关推荐

  1. CSDN创作三周年纪念

    机缘 2019年5月16日,博主以一篇记录自己用Java实现的Demo的文章,开启了CSDN创作之路.时至今日,已经三年过去,博主也从菜鸟成为了博客专家,感谢CSDN给予博主施展自我的平台. 博主最初 ...

  2. 【在CSDN创作2021年度总结】2021年的第一场雪,来的比以往更早一些

    前言 站在2021年的末尾,当我们回顾2020年初立的flag的时候,你在年初的豪言壮语,各种计划表有多少实现了呢?感谢大家在2021年的全程陪伴,2022年,我们收拾好行装,继续前行. 博客之星评选 ...

  3. CSDN创作中心Markdown编辑器基本使用方法

      首先,这篇文章原出处是CSDN中创作中心自带的教程,但因为只能在创作中心看,并不方便日常的使用参考,故在原教程基础上加上部分自己的使用心得,可以更直观的显示各语法的效果,记录各类语法的使用.    ...

  4. CSDN第九次竞赛题解与总结

    CSDN第九次竞赛题解与总结 前言 T1小艺读书 题意 分析 T2鬼画符门之宗门大比 题意 分析 代码 别的方法 T3硬币划分 题意 分析 状态 转移方程 初始值 代码 T4饿龙咆哮-逃离城堡 题意 ...

  5. 谨以此篇纪念我的CSDN创作两周年

    谨以此篇纪念我的CSDN创作两周年 // 每一位 IT 从业人员最开始了解的语句:Hello World System.out.println("Hello World");// ...

  6. 【CSDN创作活动】 - 我参加过的那些竞赛

    努力是为了让自己不平庸,你参加过哪些竞赛,有哪些收获?快来分享一下你的参赛经历吧! 文章目录 计算机类 1. 充满惊喜的"计算机设计大赛" 2. 痛苦而又快乐的"黑客马拉 ...

  7. 【方向盘】YourBatman在CSDN创作4周年纪念日

    四年,四年,你知道我这四年是怎么过的吗? ✍机缘 2018年05月17日,平凡的一天,之于我有不平凡的意义.笔者写下了在知识分享领域(自媒体领域)属于自己的第一篇文章,它发生在CSDN:静态代码块.静 ...

  8. CSDN创作的markdown语法效果示意图

    https://blog.csdn.net/BTUJACK/article/details/89351972 上面是语法,下面是语法效果 这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 ...

  9. CSDN创作的markdown语法

    我记录这个语法的目的就是发现CSDN产品经理的脑子被驴踢了 用markdown编辑器,只有第一次才会出现markdown语法,当你第二次再次编写时候,这个语法说明就找不到了,完全是空白的,产品经理完全 ...

最新文章

  1. leetcode-169.求众数
  2. 2018年香港私隐公署接129宗资料外泄通报 创新高
  3. QT的QSignalTransition类的使用
  4. 算法测试—机器学习算法评价指标
  5. C# 制作指示灯(经典)
  6. 利用计算机录音模拟声波,2016年计算机一级考试题库及答案
  7. main函数argc,argv操作
  8. 如何使用STM32F4的BootLoader和APP程序
  9. 解析json对象出现$ref: $.list[0]的解决办法
  10. wps云文档+到计算机,读书笔记:WPS云文档计算机版本
  11. C语言编程题:简单的a+b
  12. rss对称网卡linux,dpdk-18.11网卡多队列RSS设置
  13. 计算机英语名词简释及省略解释
  14. web工程无法访问本地图片解决方案
  15. 20张图片梳理工业软件全貌
  16. java使用wkhtmltopdf将html转换成pdf
  17. 华为交换机配置常用命令
  18. 前端项目,看我在这里管理全局后台初始化的数据,就问你飒不飒?
  19. python绘制反比例函数_描点法画反比例函数图像的动态演示——数学软件GeoGebra制作教程...
  20. [导入]Realtek瑞昱ALC全系列AC97声音芯片驱动 3.80

热门文章

  1. python用turtle画月亮_使用python turtle画高达
  2. 【随机区组设计和析因设计的区别】
  3. 世界需要简化第五篇:阅读本文需要有基础,仅一文教你快速应用FOC的SVPWM实现三相异步电机调速?快速学会使用著名的电机SVPWM调速控制算法——史上最简单易懂,算法经高度抽象简化,所有下标经仔细核对
  4. 毕业设计-基于微信小程序的校园快递代取系统
  5. DES加密与解密代码
  6. 在这里慢慢积累一些单词的记忆方法
  7. 2023跨年烟花3D最炫烟花,html最酷炫动态烟花源码分享,点击即可直接运行
  8. 省二级c语言考试用vs行不行,计算机等级考试:C++和Visual C++有什么区别?
  9. github上有什么好的node.js的项目?
  10. Low-light images enhancement系列:EnlightenGAN:Deep Light Enhancement without Paired Supervision