# In[1]:载入各种数据科学与可视化库
#导入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
# In[2]:导入训练集train.csv
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Train_data = pd.read_csv('D:/Cadabra_tools002/tianqi_file/train.csv')
# In[3]:导入测试集testA.csv
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
Test_data = pd.read_csv('D:/Cadabra_tools002/tianqi_file/testA.csv')
所有特征集均脱敏感处理:
# In[4]:观察train首尾数据
Train_data.head().append(Train_data.tail())
查看训练集的前 5 5 5 行和末尾 5 5 5 行
# In[5]:观察train数据集的行列信息
Train_data.shape
# In[6]:观察testA首尾数据
Test_data.head().append(Test_data.tail())
# In[7]:观察testA数据集的行列信息
Test_data.shape
describe 中有每列的统计量,个数 count、平均值 mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式;
info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
data.describe() – 获取数据的相关统计量
data.info() – 获取数据类型
# In[8]:获取train数据的相关统计量
Train_data.describe()
# In[9]:获取train数据类型
Train_data.info
# In[10]:获取testA数据的相关统计量
Test_data.describe()
# In[11]:获取testA数据类型
Test_data.info()
data.isnull().sum() -- 查看每列的存在 nan 情况
# In[12]:查看trian每列的存在nan情况
Train_data.isnull().sum()
# In[13]:查看testA每列的存在nan情况
Test_data.isnull().sum()
# In[14]:查看label属性
Train_data['label']
# In[15]:统计label属性值
Train_data['label'].value_counts()
# In[16]:
## 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)
数据的偏度和蜂度 – df.skew()、df.kurt()
我们一般会拿偏度和峰度来看数据的分布形态,而且一般会跟正态分布做比较,我们把正态分布的偏度和峰度都看做零。如果我们在实操中,算到偏度峰度不为0,即表明变量存在左偏右偏,或者是高顶平顶这么一说。
一、偏度(Skewness):
Definiton:是描述数据分布形态的统计量,其描述的是某总体取值分布的对称性,简单来说就是数据的不对称程度。
偏度是三阶中心距计算出来的。
(1)Skewness = 0 ,分布形态与正态分布偏度相同。
(2)Skewness > 0 ,正偏差数值较大,为正偏或右偏。长尾巴拖在右边,数据右端有较多的极端值。
(3)Skewness < 0 ,负偏差数值较大,为负偏或左偏。长尾巴拖在左边,数据左端有较多的极端值。
(4)数值的绝对值越大,表明数据分布越不对称,偏斜程度大。
计算公式:
S k e w n e s s = E [ ( ( x − E ( x ) ) / ( D ( x ) ) ) 3 ] Skewness=E[((x-E(x))/(\sqrt{D(x)}))^3] Skewness=E[((x−E(x))/(D(x)))3]
∣ S k e w n e s s ∣ | Skewness| ∣Skewness∣ 越大,分布形态偏移程度越大。
二、峰度(Kurtosis):
Definition:偏度是描述某变量所有取值分布形态陡缓程度的统计量,简单来说就是数据分布顶的尖锐程度。
峰度是四阶标准矩计算出来的。
(1)Kurtosis=0 与正态分布的陡缓程度相同。
(2)Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
(3)Kurtosis<0 比正态分布的高峰来得平台——平顶峰
计算公式:
K u r t o s i s = E [ ( ( x − E ( x ) ) / ( ( D ( x ) ) ) ) 4 ] − 3 Kurtosis=E[ ( (x-E(x))/ (\sqrt(D(x))) )^4 ]-3 Kurtosis=E[((x−E(x))/((D(x))))4]−3
# In[17]:
# 2)查看skewness(偏态) and kurtosis(峰度)
sns.distplot(Train_data['label']);
print("Skewness: %f" % Train_data['label'].skew())
print("Kurtosis: %f" % Train_data['label'].kurt())
# In[18]:其他列的偏态和峰度
Train_data.skew(), Train_data.kurt()
# In[19]:心跳信号类别的蜂度
sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')
# In[20]:
## 3) 查看预测值的具体频数
plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()
源码及运行结果