本文主要对Kaggle的一个比赛项目,进行了分析说明,希望能够查找到原因,提高数据分析的能力。
具体项目要求及数据请看[这里]
简而言之这是一个多分类的问题,并需要计算出属于各个类的概率,项目评判的标准是交叉熵(Cross Entropy)最小。
1、数据的加载与清洗
由于所给数据为csv格式,而且还有header选择使用了pandas中的read_csv函数作为加载数据的函数,具体代码如下:
animals = pd.read_csv('D://shelter/train.csv')
p_animals = pd.read_csv('D://shelter/test.csv')
观察数据不难发现其中有不少数据缺失的情况,暂且先不考虑,提取特征的时候予以重点考虑。
2、特征提取
最开始时对这块儿不太重视,只想套用模型计算结果,后来发现特征提取(或称之为特征工程)可以说是最关键的一步。好的特征 + 简单的模型 >> 一般的特征 + 高级模型,这个方面会在后文详细介绍。
- 分析AnimalID,每一个Animal有唯一的ID,因此这一特征可以删除,不用考虑;
- 分析Name这一列特征,可以发现有很多缺失数据,也就是说有些动物可能没有名字,最开始的 时候我直接把这一行数据弃用了;后来发现这是一个很大的错误,因为有名字的动物可能以前已经被收养过,而没有名字的动物,可能以前没有被收养过(当然也可能存在漏统计等因素),但不管怎么说我们从实际出发, 这个特征可能会对流浪动物的去向有影响,这点需要注意的是我们再最初筛选特征