matplotlib,seaborn画核密度曲线,观察数据

数据集https://www.kaggle.com/c/cat-in-the-dat-ii

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

if __name__ == '__main__':
   raw_train=pd.read_csv('train.csv')
   raw_train=raw_train.drop('id',axis=1)
   raw_test=pd.read_csv('test.csv')
   raw_test=raw_test.drop('id',axis=1)
   num_cols=raw_test.select_dtypes(exclude='object').columns.values
   fig=plt.figure(figsize=(20,7))
   for i,col in enumerate(num_cols):
        ax=fig.add_subplot(2,3,i+1)
        ax.set_title(col)
        sns.kdeplot(raw_train[col].values,bw=0.5,label="train")
        sns.kdeplot(raw_test[col].values,bw=0.5,label='test')
   plt.show()

matplotlib,seaborn画核密度曲线,观察数据_第1张图片
上图中我们可以看出,测试集与训练集在数字的列上分布是几乎是一模一样,那么就意味着如果我们能够找到较好的模型来预测数据那么它在测试集上泛化将会是很好的。
我们再来观察一下标签与我们的测试数据分布

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

if __name__ == '__main__':
   raw_train=pd.read_csv('train.csv')
   raw_train=raw_train.drop('id',axis=1)
   raw_test=pd.read_csv('test.csv')
   raw_test=raw_test.drop('id',axis=1)
   num_cols=raw_test.select_dtypes(exclude='object').columns.values
   target_0=raw_train[raw_train['target']==0]
   target_1 = raw_train[raw_train['target'] == 1]
   fig=plt.figure(figsize=(20,7))
   for i,col in enumerate(num_cols):
        ax=fig.add_subplot(2,3,i+1)
        ax.set_title(col)
        sns.kdeplot(target_0[col].values,bw=0.5,label="train-0")
        sns.kdeplot(target_1[col].values,bw=0.5,label='train-1')
        sns.kdeplot(raw_test[col].values,bw=0.5,label='test')
   plt.show()

matplotlib,seaborn画核密度曲线,观察数据_第2张图片
图中我们可以看出,测试数据对于0的样本高度相似,对于1的样本有点不同,我们可以推测在测试集中有较为多的0样本。
参考:https://www.kaggle.com/warkingleo2000/first-step-on-kaggle/notebook

你可能感兴趣的:(matplotlib)