kaggle新手第三场比赛——Instant-Gratification

1.项目介绍
这场比赛中给出了二分类的数据集和一首藏头诗,这首诗中暗藏的玄机我们会在接下来的分析当中逐渐给出说明 。比赛的数据集依旧是老三样:训练集(train.csv)、测试集合(test.csv)以及结果提交模版(.csv) 。
Silly column names abound, but the test set is a mystery. Careful how you pick and slice, or be left behind by history.
这次比赛不同于之前比赛的一点是在时,系统会运行一次你的程序,并且test.csv只用到了部分的数据 。而在你选择文件提交的时候,系统会再一次运行你的程序,这时用到的test.csv包括和两部分的数据集,并且只显示部分的得分 。而在最后比赛截止的时候,会使用部分的分数进行排名,这里的和数据集的样本数量相同 。ps:本篇blog回顾了做比赛的心路历程,在本地IDE中重新跑了一遍code并进行截图(po主比较喜欢用) 。其中的发现一部分是博主自己的思考,一部分来自队友男票,一部分来自的区及区的大神 。
【kaggle新手第三场比赛——Instant-Gratification】2.EDA( Data )
首先,要熟悉实验数据 。
import numpy as npimport pandas as pdimport matplotlib. pyplotaspltimport seaborn as snstrain=pd.read_csv('../input/train.csv')test=pd.read_csv('../input/test.csv')# observe columns names in train.csvname_list=train.columns.tolist()#observe train set train.head()
导出训练数据集train.csv的列名,除了列id和之外的列均由四个英文单词构成,看起来目前无法从列名中得到一些有用的信息 。
从train文件的前五行能够看出,train由,和256个特征组成 。
接下来,看一下训练集train. 的情况,我们发现这个数据集的分布比较均匀,且那一列的名字让我们有理由认为这可能是人造数据 。
下面观察一下的分布情况 。从图中我们发现,除了'---magic'特征之外的其他255个特征都近似于。
这特殊的一列值得我们的注意,而且也呼应了举办方给出的藏头诗的第一句:Sillynames ,那么是否可以认为我们找到了一个silly .这一列数据的最小值是0,最大值是511,在中将train.csv文件的这一列选出,这一列数据和旁边的数据比起来一看还是比较辣眼睛的 。
其实我特别想说,在当时我第一遍作出这些数据这些图的时候,我除了觉得有时候图比较好看,并没有什么直觉说哪些数据可能是magic 。可能是做的多了之后,看到数据呈现某些状态就有哪些直觉了吧 。不过因为博主最近也在看李航大神的《统计学习方法》EM算法和高斯混合模型的部分,而且恰好这次比赛的特征制图也比较像Gauss,所以我直觉上会对觉得高斯混合模型有特别的感觉,然而并没什么卵用,因为我还在各种扒区大神的代码,看,跟着炒一些区爆出来的高分代码 。
下面我也得画一下test.csv的图吧 。
plt.figure()fig,ax=plt.subplots(6,6,figsize=(14,14))for j in range(1,37):testname[j]in namelistplt.subplot(6,6,j)plt.hist(test[namelist[j]].values,bins=100)plt.title(testname[j],fontsize=7)plt.xlabel('Value',fontsize=7)plt.ylabel('Target',fontsize=7)plt.show()
test.describe()
在这里稍微对数据进行一下总结:
下面就可以对特征对相关性进行一下研究:
magic='wheezy-copper-turtle-magic'train_corr=train.drop(['target',magic],axis=1).corr()test_corr=test.drop(magic,axis=1).corr()train_corr_flat = train_corr.values.flatten()train_corr_flat = train_corr_flat[train_corr_flat != 1]test_corr_flat = test_corr.values.flatten()test_corr_flat = test_corr_flat[test_corr_flat != 1]fig, ax = plt.subplots(1,2,figsize=(20,5))sns.distplot(train_corr_flat, ax=ax[0], color="tomato")sns.distplot(test_corr_flat, ax=ax[1], color="limegreen");ax[0].set_title("Off-diagonal train corr \n distribution")ax[1].set_title("Off-diagonal test corr \n distribution");ax[0].set_xlabel("feature correlation value")ax[1].set_xlabel("feature correlation value");