心跳分类预测——task2 数据分析
EDA的价值主要在于熟悉数据集,了解数据集,对数据集进行验证来确定所获得数据集可以用于接下来的机器学习或者深度学习使用。
内容简介
1、载入各种数据科学以及可视化库:
- 数据科学库 pandas、numpy、scipy;
- 可视化库 matplotlib、seabon;
2、载入数据:
- 载入训练集和测试集;
- 简略观察数据(head()+shape);
3、数据总览:
- 通过describe()来熟悉数据的相关统计量
- 通过info()来熟悉数据类型
4、判断数据缺失和异常
- 查看每列的存在nan情况
- 异常值检测
5、了解预测值的分布
- 总体分布概况
- 查看skewness and kurtosis
- 查看预测值的具体频数
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
代码示例
首先导入库函数
#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
接下来载入训练集和测试集:train.csv和testA.csv
#训练集
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Train_data = pd.read_csv('./train.csv')
#测试集
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
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)
观察testA首尾数据
Test_data.head().append(Test_data.tail())
观察testA数据集的行列信息
Test_data.shape
结果为:(20000, 2)
注: 要养成看数据集的head()以及shape的习惯,这会让你每一步更放心,导致接下里的连串的错误, 如果对自己的pandas等操作不放心,建议执行一步看一下,这样会有效的方便你进行理解函数并进行操作
总览数据概况
- describe种有每列的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
- info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
data.describe()
——获取数据的相关统计量
data.info()
——获取数据类型
获取train数据的相关统计量
Train_data.describe()
获取train数据类型
Train_data.info
结果为:
获取test数据的相关统计量
Test_data.describe()
获取test数据类型
Test_data.info
结果为:
判断数据缺失和异常
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
了解预测值的分布
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
## 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)
# 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.917596
Kurtosis: -0.825276
Train_data.skew(), Train_data.kurt()
(id 0.000000
label 0.917596
dtype: float64, id -1.200000
label -0.825276
dtype: float64)
sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')
## 3) 查看预测值的具体频数
plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()