数据预处理案例

最近在做数据处理的一些事情,写一下自己的一些处理方式,可能会比较low,


我这份数据是关于售卖房屋的方面的数据:从数据库转存的csv文件,有三百多列,也就是有300多个特征,并且数据的缺失值特别严重,拿到这样一份残缺不全的数据我也是很苦恼,

先看一下我的处理方式,

我进行数据处理用的是pandas库,大致浏览了一下数据,缺失很多,首先我们需要先统计出每一列的缺失情况,

1:由于我的数据最终是要用于去训练模型的,所以对于每一个特征,我首先先允许他的有效数据必须要大于10000条的,不然数据量不够,模型的最终效果会很差;

2:进行人为的筛选,剔除到如唯一标识符id,编号,电话号码之类的数据,具体还是要看你的标签,才最终决定你所要剔除的特征,这是要往多了挑,因为你不知道这个特征是否对最终模型会有怎样的影响,对于百分之百需要取出的才去除,要以模型的训练最终的效果来决定这个特征是留还是不留,可能有更好的方式,感觉这种方式很low,如果发现有更加科学的方式我会继续更新的

3:进行了一步筛选之后,我又提取出了数据缺失值比率大于%50 的这部分数据,利用pandas.columns 拿到这些特征,

4:最后一步就是分别以这些缺失比较大但是有效数据又是大于10000的为基准,分别得到该特征得到的数据,

比如:有一个特征是room,那就以room该列不为空来获取一个样本数据,这个操作不会对特征个数产生影响,最终会得到一个小的样本,

但是我在进行这一步操作的时候速度特别的慢:用了两种方式,一种是drop的方式,一种是通过创建一个新的DataFrame的方式,通过行添加的方式;

其中drop方式是最慢的,

5:最后就是再次对分别得到的数据样本做分析,观看各个特征缺失值的情况,选取适当的样本作为训练数据;


当然这只是预处理方式,在样本数据进行训练之前,还要进行一项‘特征工程’的操作才行,也就是特征的处理,对于数值数据怎样操作,非数值又怎样操作,是否应该进行编码,是否应该进行归一化,等等,

还有就是推荐使用tensorflow下一个estimator的库,这个库下封装了好几个模型,而且有一个关于特征处理的方式,特别好用,让你跟注重你的数据和你模型最终的样子,当然如果你是模型大牛,更注重模型,喜欢自己定制,那就不推荐这个库了,这个库下比较出名的就是wide and deep 模型,线性模型和深度模型的结合;


END



猜你喜欢

转载自blog.csdn.net/weixin_38859557/article/details/81047977