数据挖掘心电图分类(二)之分析数据

EDA

EDA,也叫作数据探索性分析。主要是为了做前期工作,在数据分析之前了解数据,熟悉数据。通过数据的shape,describe相关统计量,数据的head、tail这些部分数据长什么样子,分布情况,info数据类型,有没有缺失、重复、异常等情况让自己对数据有个基本的认知。 然后再看是否需要抽样,平衡数据,降维,特征离散化,提取哪一些特征,处理异常、缺失的数据。

前面我们说,jupyter notebook是数据分析之中很好用的一个工具,所以我们这里也使用jupyter book来分析数据。

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

import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Train_data = pd.read_csv('../dataset/train.csv', sep = '\t')   # 也可以加入nrows=10这个参数来指定读取多少行

import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt 
Test_data = pd.read_csv('../dataset/testA.csv')

我们来查看数据的形状(行列信息)

Train_data.shape
# (100000, 1)

查看数据的开头五行、末尾五行。

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

在这里插入图片描述
除了查看head,tail,shape这些基本信息,还可以通过describe来获得每列的统计量:个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值,变异系数,四分位距,中位数等等。
主要还是为了了解数据的分布范围,分布情况,是否有异常点,离群点,nan值等。

Train_data.describe()

在这里插入图片描述
然后通过info来查看数据类型。

Train_data.info()

在这里插入图片描述
接下来就是查看test的数据集,和查看训练集是差不多的步骤。

Test_data.shape
# (20000, 2)
Test_data.describe()

在这里插入图片描述

Test_data.info()

在这里插入图片描述
然后这里就是查看有无异常点了。

Train_data.isnull().sum()

在这里插入图片描述

Test_data.isnull().sum()

在这里插入图片描述
我们也可以粗略和详细了解预测值的分布。

Train_data['label']

在这里插入图片描述

Train_data['label'].value_counts()

在这里插入图片描述
当然,我们一般也会需要将数据可视化,有了图像这样会更好的理解数据,如果单单只是一个个数字,就没有那么直观了。 查看数据的话就使用pandas这个工具库,而画图的话我们一般使用scipy,matpltlib这两个画图的库。

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),偏度是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征,也叫作偏态、偏态系数。 偏度定义中包括正态分布(偏度=0),右偏分布(也叫正偏分布,其偏度>0),左偏分布(也叫负偏分布,其偏度<0)。

还有峰度(kurtosis),又称峰态系数。表征概率密度分布曲线在平均值处峰值高低的特征数。直观地看,峰度反映了峰部的尖度。 峰度包括正态分布(峰度值=3),厚尾(峰度值>3),瘦尾(峰度值<3)

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()

在这里插入图片描述

相关的统计方法有:

count 非 NA 值的数量

describe 针对 Series 或 DF 的列计算汇总统计

min , max 最小值和最大值

argmin , argmax 最小值和最大值的索引位置(整数)

idxmin , idxmax 最小值和最大值的索引值

quantile 样本分位数(0 到 1)

sum 求和

mean 均值

median 中位数

mad 根据均值计算平均绝对离差

var 方差

std 标准差

skew 样本值的偏度(三阶矩)

kurt 样本值的峰度(四阶矩)

cumsum 样本值的累计和

cummin , cummax 样本值的累计最大值和累计最小值

cumprod 样本值的累计积

diff 计算一阶差分(对时间序列很有用)

pct_change 计算百分数变化

sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')

在这里插入图片描述

plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
x_ticks = range(0, 4, 1)
plt.xticks(x_ticks)
plt.show()

在这里插入图片描述
数据探索性分析是我们初步了解数据,熟悉数据为特征工程做准备的阶段,甚至很多时候EDA阶段提取出来的特征可以直接当作规则来用。可见EDA的重要性,这个阶段的主要工作还是借助于各个简单的统计量来对数据整体的了解,分析各个类型变量相互之间的关系,以及用合适的图形可视化出来直观观察。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值