• 比赛地址:零基础入门数据挖掘-心跳信号分类预测
  • 参考资料:由DataWhale开源的学习资料,Seaborn官方文档

1. EDA 目标

  • EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
  • 当了解了数据集之后我们下一步就是要去了解变量间的相互关系以及变量与预测值之间的存在关系。
  • 引导数据科学从业者进行数据处理以及特征工程的步骤,使数据集的结构和特征集让接下来的预测问题更加可靠。
  • 完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结并打卡。

2. 内容介绍

  1. 载入各种数据科学以及可视化库:

    • 数据科学库 pandas、numpy、scipy;
    • 可视化库 matplotlib、seabon;
  2. 载入数据:
    • 载入训练集和测试集;
    • 简略观察数据(head()+shape);
  3. 数据总览:
    • 通过describe()来熟悉数据的相关统计量
    • 通过info()来熟悉数据类型
  4. 判断数据缺失和异常
    • 查看每列的存在nan情况
    • 异常值检测
  5. 了解预测值的分布
    • 总体分布概况
    • 查看skewness and kurtosis
    • 查看预测值的具体频数

3. 代码示例

3.1 载入各种数据科学与可视化库

#coding:utf-8
#导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')
import missingno as msno
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

3.2 载入训练集和测试集

导入训练集train.csv和测试集testA.csv

Train_data = pd.read_csv('./train.csv')
Test_data = pd.read_csv('./testA.csv')
  • id - 心跳信号分配的唯一标识
  • heartbeat_signals - 心跳信号序列
  • label - 心跳信号类别(0、1、2、3)

data.head().append(data.tail())——观察首尾数据

data.shape——观察数据集的行列信息

观察train首尾数据

Train_data.head().append(Train_data.tail())

观察train数据集的行列信息

Train_data.shape
(100000, 3)

要养成看数据集的head()以及shape的习惯,这会让你每一步更放心,导致接下里的连串的错误, 如果对自己的pandas等操作不放心,建议执行一步看一下,这样会有效的方便你进行理解函数并进行操作

2.3.3 总览数据概况

  1. describe种有每列的统计量,个数count、平均值mean、方差std、最小值min、中位数、25% 、50% 、75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
  2. info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常

data.describe()——获取数据的相关统计量

data.info()——获取数据类型

获取train数据的相关统计量

Train_data.describe()
id   label
count   100000.000000   100000.000000
mean    49999.500000    0.856960
std 28867.657797    1.217084
min 0.000000    0.000000
25% 24999.750000    0.000000
50% 49999.500000    0.000000
75% 74999.250000    2.000000
max 99999.000000    3.000000

获取train数据类型

Train_data.info
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100000 entries, 0 to 99999
Data columns (total 3 columns):#   Column             Non-Null Count   Dtype
---  ------             --------------   -----  0   id                 100000 non-null  int64  1   heartbeat_signals  100000 non-null  object 2   label              100000 non-null  float64
dtypes: float64(1), int64(1), object(1)
memory usage: 2.3+ MB

3.4 判断数据缺失和异常

data.isnull().sum()——查看每列的存在nan情况

查看trian每列的存在nan情况

Train_data.isnull().sum()
id                   0
heartbeat_signals    0
label                0
dtype: int64

查看testA每列的存在nan情况

Test_data.isnull().sum()
id                   0
heartbeat_signals    0
dtype: int64

2.3.5 了解预测值的分布

Train_data['label']
0        0.0
1        0.0
2        4.0
3        0.0
4        0.0...
99995    4.0
99996    0.0
99997    0.0
99998    0.0
99999    1.0
Name: label, Length: 100000, dtype: float64
Train_data['label'].value_counts()
0.0    58883
4.0    19660
2.0    12994
1.0     6522
3.0     1941
Name: label, dtype: int64

seaborn.distplot介绍

seaborn.distplot
seaborn.distplot(a=None, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None, x=None)

This function combines the matplotlib hist function (with automatic calculation of a good default bin size) with the seaborn kdeplot() and rugplot() functions. It can also fit scipy.stats distributions and plot the estimated PDF over the data.

Parameters:

  • a: Series, 1d-array, or list.
    Observed data. If this is a Series object with a name attribute, the name will be used to label the data axis.

  • bins: argument for matplotlib hist(), or None, optional
    Specification of hist bins. If unspecified, as reference rule is used that tries to find a useful default.

  • hist: bool, optional
    Whether to plot a (normed) histogram.

  • kde:bool, optional
    Whether to plot a gaussian kernel density estimate.

  • rug: bool, optional
    Whether to draw a rugplot on the support axis.

  • fit: random variable object, optional
    An object with fit method, returning a tuple that can be passed to a pdf method a positional arguments following a grid of values to evaluate the pdf on.

  • hist_kws: dict, optional
    Keyword arguments for matplotlib.axes.Axes.hist().

  • kde_kws: dict, optional
    Keyword arguments for kdeplot().

  • rug_kws: dict, optional
    Keyword arguments for rugplot().

  • color: matplotlib color, optional
    Color to plot everything but the fitted curve in.

  • vertical: bool, optional
    If True, observed values are on y-axis.

  • norm_hist: bool, optional If True, the histogram height shows a density rather than a count. This is implied if a KDE or fitted density is plotted.

  • axlabel: string, False, or None, optional
    Name for the support axis label. If None, will try to get it from a.name if False, do not set a label.

  • label: string, optional
    Legend label for the relevant component of the plot.

  • ax:matplotlib axis, optional
    If provided, plot on this axis.

Returns: ax: matplotlib
Axes Returns the Axes object with the plot for further tweaking.

## 1) 总体分布概况(无界约翰逊分布等)
import scipy.stats as st
y = Train_data['label']
plt.figure(1); plt.title('Default')
sns.distplot(y, rug=True, bins=20)
plt.figure(2); plt.title('Normal')
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
sns.distplot(y, kde=False, fit=st.lognorm)



  • 偏度
    偏度(skewness),是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征。
  • 峰度
    峰度(peakedness;kurtosi)又称峰态系数。表征概率密度分布曲线在平均值处峰值高低的特征数。
# 2)查看skewness and kurtosis
sns.distplot(Train_data['label']);
print("Skewness: %f" % Train_data['label'].skew())
print("Kurtosis: %f" % Train_data['label'].kurt())
Skewness: 0.871005
Kurtosis: -1.009573

Train_data.skew(), Train_data.kurt()
(id       0.000000label    0.871005dtype: float64,id      -1.200000label   -1.009573dtype: float64)
sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')

## 3) 查看预测值的具体频数
plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()

天池大赛-心跳信号分类预测:探索性数据分析相关推荐

  1. 天池大赛-心跳信号分类预测:赛题理解与baseline解析

    比赛地址:零基础入门数据挖掘-心跳信号分类预测 参考资料:由DataWhale开源的学习资料 1. 赛题简介 本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事 -- 心跳信号分类预测. ...

  2. 天池大赛-心跳信号分类预测:建模与调参

    比赛地址:零基础入门数据挖掘-心跳信号分类预测 参考资料:由DataWhale开源的学习资料 1 内容介绍 逻辑回归模型: 理解逻辑回归模型: 逻辑回归模型的应用: 逻辑回归的优缺点: 树模型: 理解 ...

  3. 【Datawhale|天池】心跳信号分类预测 (4) - 模型 之 XGBoost

    本文主要分享自己总结的关于 xgboost 的笔记. 基础知识 基学习器 CART Regression:L(yi,y^i)=(yi−f(xi))2Classification:Gini(D)=∑k= ...

  4. 【Datawhale|天池】心跳信号分类预测 (3) - 特征工程 ☞ tsfresh 时序特征提取

    目录 导入包 读取数据 数据预处理 使用 tsfresh 提取特征 References 导入包 import pandas as pd import numpy as np import tsfre ...

  5. 2021-03-17零基础入门数据挖掘-心跳信号分类预测

    零基础入门数据挖掘-心跳信号分类预测TASK02 1.学习目标: 2.学习内容 2.1载入库 2.2载入数据 2.3数据总览 2.4数据缺失和异常 2.5预测值分布 1.学习目标: 数据探索性分析ED ...

  6. 【数据挖掘】心跳信号分类预测 之 赛题理解 —— 学习笔记(一)

    目录 一.赛题理解 1.1 学习目标 1.2 了解赛题 1.2.1 赛题概况 1.2.2 数据概况 1.2.3 预测指标 1.2.4 赛题分析 1.3 Baseline 学习与解读 1.3.1 导入依 ...

  7. 【算法竞赛学习】心跳信号分类预测-特征工程

    Task3 特征工程 此部分为零基础入门数据挖掘-心跳信号分类预测的 Task3 特征工程部分,带你来了解时间序列特征工程以及分析方法,欢迎大家后续多多交流. 赛题:零基础入门数据挖掘-心跳信号分类预 ...

  8. 数据挖掘-Task1:心跳信号分类预测(赛题理解)

    目录 前言 一.赛题 1.1 赛题概况 1.2 数据概况 1.3 预测指标 1.4 赛题分析 二.代码示例 2.1 数据读取 (导入pandas) 2.2 分类指标计算示例 2.3 baseline ...

  9. 阿里天池心跳信号分类预测baseline

    阿里天池又来了一个数据挖掘新人赛,是关于心跳信号分类的预测问题,主要针对初学者学习数据挖掘知识 比赛地址链接 这次数据比较有意思,和最常见的多属性结构化数据不同,本次数据是心电图数据记录,所以用一下传 ...

最新文章

  1. PVN3D: 基于Deep Point-wise 3D关键点投票的6D姿态估计网络(香港科技大学提出)
  2. 打造自己的数据访问层(二)
  3. 今天的在一旁看电视的蜡笔小新
  4. Jrebel 激活方式
  5. struts2上传文件时把文件放到服务器真实路径下的webapps\upload下
  6. 利用ros3djs接收pointcloud2在web端显示
  7. elasticsearch6.0单机配置+centos7.0J+dk1.8
  8. 8.Mac PHPStorm 快捷键
  9. foobar android 目录,最强手机音乐播放器?Foobar2K安卓版体验
  10. Leetcode+牛客网—回文串总结(一)
  11. 学会数据可视化,轻松做出企业级可视化报表
  12. 阿里云服务器可以用来干什么?
  13. 堂食扫码点餐的小程序设计开发
  14. 2019计算机研究生暑期学校,2019年度VLDB暑期学校
  15. 消防工程师 第二篇 建筑防火 1.厂房和仓库的火灾危险性分类
  16. 系统集成考试口诀万金油记忆
  17. matlab函数之bsxfun
  18. PyTorch:生态简介
  19. iPhone连接电脑后iTunes不识别的解决办法
  20. 推荐系统论文笔记---Neural News Recommendation with Attentive Multi-View Learning

热门文章

  1. 什么是web前端开发工程师?主要做什么的?
  2. 请问下这个hive beeline命令是啥意思。
  3. python 导入sklearn时报错: no model named ‘murmurhash‘
  4. 详解非局部均值滤波原理以及用MATLAB源码实现
  5. 点餐微信小程序【源码好又多】
  6. Http和https请求过程
  7. Jmeter之查看结果树详解
  8. 2020-06-11
  9. Python中NaN、nan和NAN的区别及使用方法
  10. 解决腾讯地图标记多个点,只渲染最后一个点问题